我有DisplayFor Field,我从表中显示数据。
我需要向用户发送电子邮件(使用他的电子邮件,这是我在DisplayFor中的价值)
我在Controller中发送此代码以发送电子邮件。
这是:
public ActionResult SendEmail(SmartSolutions.Models.Clients _objModelMail, string email)
{
MailMessage mail = new MailMessage();
mail.To.Add(email);
mail.From = new MailAddress(_objModelMail.From = "suhomlin.eugene93@gmail.com");
mail.Subject = _objModelMail.Subject = "Данные для входа";
string Body = _objModelMail.Body = "Ваши данные для входа это ваш Email"+" Ваш пароль"+_objModelMail.Password;
mail.Body = Body;
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential
("********", "*********");// Enter seders User name and password
smtp.EnableSsl = true;
smtp.Send(mail);
return View("SendEmail", _objModelMail );
}
有效。我尝试将DisplayFor的值发送到方法string email
所以在视图中我有这个代码
<td style="text-align: center;">
@Html.DisplayFor(modelItem => item.Email,null,"email")
</td>
如果我将DisplayFor更改为EditorFor,一切正常。
客户模型
public int ID { get; set; }
[Required]
[Display(Name = "Email")]
[EmailAddress]
public string Email { get; set; }
[Display(Name = "Ф.И.О")]
public string UserName { get; set; }
[Display(Name = "Должность")]
public string Position { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Пароль")]
public string Password { get; set; }
public string From { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
我如何为DisplayFor做这个?
答案 0 :(得分:1)
实际上@Html.DisplayFor()
只做一次旅行意味着它只会显示价值而不是相反的方式,当你提交表单时,它会提交隐藏字段,文本框等的值,如果你想定义一个自定义字段并获得该值,您可以使用@Html.Hidden
并像这样使用它
@Html.Hidden("clientEmail",item.Email)
first overload
设置隐藏字段的名称,second overload
设置隐藏字段的值,最后使用
public ActionResult SendEmail(SmartSolutions.Models.Clients _objModelMail, string clientEmail)
{
}
答案 1 :(得分:0)
在视图中,添加以下行:
@Html.HiddenFor(modelItem => item.Email);
这样,当您调用控制器(SendEmail)中的帖子操作时,该属性的值将不会丢失。
您需要做的下一件事是从控制器中删除email参数。由于模型现在包含属性中的值,因此您实际上可以使用模型,因此在控制器中更改此行:
mail.To.Add(_objModelMail.Email); // was mail.To.Add(email);