我正在调用控制器方法SendMe(formCollection myForm){}。 但我不知道如何传递包含一些信息的Form。我知道如何阅读它,以及如何在给定的控制器上调用SendMe(),但我不知道如何传递它。虽然,作为参考我称之为SendMe:
<div id="menucontainer">
<ul id="menu">
<li><%: Html.ActionLink("Send", "SendMe", "Mail")%></li>
</ul>
</div>
我的SendMe方法是:
public ActionResult SendMe(FormCollection Form)
{
string From = Form["From"].ToString();
string Pass = Form["Password"].ToString();
string To = Form["To"].ToString();
string Subject = Form["Subject"].ToString();
string Message = Form["Message"].ToString();
MailMessage nmsg = new MailMessage(From, To, Subject, Message);
nmsg.IsBodyHtml = true;
nmsg.Priority = MailPriority.High;
SmtpClient smtpc = new SmtpClient("smtp.gmail.com", 587);
smtpc.Credentials = new System.Net.NetworkCredential(From, Pass);
smtpc.EnableSsl = true;
smtpc.Send(nmsg);
return View();
}
我没有在Model中放任何东西,但MailController和SendMe.aspx已经到位。
告诉我如何解决这个问题。提前谢谢。
答案 0 :(得分:3)
这个简单的代码应该有效...如果您需要的是从表单提交信息...请清楚我是否理解错误..我建议使用viewmodel或者其他东西来验证这些字段...在viewmodel情况下你应该从viewmodel继承页面...并从viewmodel对象而不是formcollection中检索...
<% Html.BeginForm("SendMe", "Send", FormMethod.Post); %> //Here 1st parameter is the actionname while second is the Controller name
//Form Fields....
<input id="SendMe" type="submit" value="Send Info" />
<% Html.EndForm(); %>
答案 1 :(得分:0)
为了获得控制器中的FORM
变量,需要通过Http POST提交表单。
<% using (Html.BeginForm()) {%>
.....
<% Html.EndForm(); %>