Есть ли способ отправить по электронной почте все значения элементов управления вводом в asp.net - PullRequest
3 голосов
/ 19 февраля 2010

Я ищу способ отправить все значения, введенные пользователем в форму. Это существует в asp.net?

вот мой код электронной почты:

 Dim messagemain As String = emailbody
        Dim message As New MailMessage()
        message.IsBodyHtml = True
        message.From = New MailAddress("foo@foo.com")
        message.To.Add(New MailAddress("foo@foo.com"))
        message.Subject = ("Response from form")
        message.Body = (messagemain)
        Dim client As New SmtpClient()
        client.Host = "email.foo.foo"
        client.Send(message)

Обычно я делаю это вручную и добавляю все необходимое в emailbody var, а затем отправляю, но эта форма содержит более 200 полей.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 19 февраля 2010

Вы можете попробовать зацикливаться на коллекции Controls страницы и, если найдете текстовое поле, добавить его значение в тело письма:

var body = new StringBuilder();
foreach (var control in pageInstance.Controls)
{
    if (control is TextBox)
    {
        var value = ((TextBox)control).Text;
        body.AppendFormat("value: {0}<br/>", HttpUtility.HtmlEncode(value));
    }
}
message.Body = body.ToString();

Примечание: Это будет работать, только если текстовые поля размещены непосредственно на странице, а не внутри некоторых других контейнеров, таких как панели, ... Чтобы учесть это, вы могли бы написать рекурсивную функцию который посещает все элементы управления.

2 голосов
/ 19 февраля 2010

Что ж, вместо того, чтобы строить его вручную, этот миг поможет вам, если вам нужно все значения формы.

var sb = new StringBuilder();
foreach (string key in this.Request.Form.Keys)
    sb.AppendFormat("{0} = {1}<br/>", key, this.Request.Form[key]);
var emailbody = sb.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...