2009-10-26 130 views
0

我的查看页面有一个由学生列表代表的模型。如何在ASP.Net MVC中将对象列表传递给[Post]控制器参数?

我想传递模型控制器参数:

[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,我看到了列表是空的。 无法从视图向控制器发送列表?如果不是,我该如何解决这个问题?

回答

1

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

应该是int这种形式(我认为学生有例如电子邮件和Name属性):

“前缀[” +迭代器+ “]属性名。”

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

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

它的工作原理,谢谢! 我之前没有接受答案,因为直到现在我还没有尝试。 – andreiursan 2009-11-11 08:49:15

相关问题