【问题标题】:How to pass a list of objects to a [Post]controller parameter, in ASP.Net MVC?如何在 ASP.Net MVC 中将对象列表传递给 [Post] 控制器参数?
【发布时间】:2009-10-26 13:45:01
【问题描述】:

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

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

[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 是空的。 不能从视图向控制器发送列表吗?如果没有,我该如何解决?

【问题讨论】:

    标签: asp.net-mvc parameters


    【解决方案1】:

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

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

    "PREFIX["+iterator+"].PropertyName"

     <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>
    

    如果你命名不同,那么前缀可以设置在动作上:

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

    【讨论】:

    • 它有效,谢谢!我没有早点接受答案,因为我直到现在才尝试。
    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    相关资源
    最近更新 更多