如何在MVC2.0中单击按钮时传递FORM?

时间:2010-09-20 18:20:09

标签: asp.net-mvc-2

我正在调用控制器方法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已经到位。

告诉我如何解决这个问题。提前谢谢。

2 个答案:

答案 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(); %>