如何在ASP.Net MVC中将对象列表传递给[Post]控制器参数?

时间:2009-10-26 13:45:02

标签: asp.net-mvc parameters

我的视图页面有一个模型,由学生列表表示。

我想将该Model传递给控制器​​参数:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SendMail(List<Student> students)
{
    .............
    return View("Success",students)
}

我用Ajax.ActionLink尝试了这个:

<%= Ajax.ActionLink("Send Mail to list AT SCS", "SendMail", students = Model,
                             new AjaxOptions()
                             {
                                 Confirm = "Are you sure you want to send mails?",
                                 HttpMethod = "POST"
                             }
                     )%>

但是当我在VS中使用调试器时,我发现List是空的。 是否无法从视图向控制器发送列表?如果没有,我该如何解决?

1 个答案:

答案 0 :(得分:1)

您如何在发布的表单中命名输入控件?

它应该是这种形式(我假设学生有电子邮件和姓名属性):

  

<强> “PREFIX [” +迭代+ “]。属性名”

 <ul>
    <% int i = 0; foreach (Student s in (IEnumerable)this.Model)
       {%>
    <li>
        <%=Html.TextBox("student[" + i + "].Email")%>
        <%=Html.TextBox("student[" + i + "].Name")%>
    </li>
    <%i++;
       } %>
</ul>

如果您对其进行了不同的命名,则可以在Action:

上设置Prefix
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SendMail(Bind(Prefix="thePrefix")]List<Student> students)
{
    .............
    return View("Success",students)
}