2009-12-29 79 views
2

我有一个模型(实体类)通讯。我将一份新闻通讯列表传递给一个视图,并在每张新闻通讯的一个表格中显示新闻通讯的列表。除了每个通讯行之外,还有一个复选框。我将通过选中复选框并单击发送按钮来选择要发送的新闻快讯。ASP.Net MVC - 将查看中的选定数据传递给控制器​​(帮助!)

如何将选定的新闻快递传递给控制器​​?

谢谢。

+0

这是否已经解决? – 2009-12-29 19:52:36

回答

1

在视图:

<input type="checkbox" name="newsletterIds" value="<%=newsletter.Id%>"/> 

在您的目标控制器中:

public ActionResult SendNewsletters(int[] newsletterIds) 
{ 
... do something with the ids... 
} 
0

只需将一个名为Selected的布尔值添加到您的实体类中,该实体类在传回控制器时会告诉控制器在列表中选择了哪些通讯。

如果你不想用客户端元数据“污染”你的实体类,你可以继承它并在你的派生类中添加所选的布尔值。

或者,您的模型可以简单地包含一个单独的列表,其中包含对所选简报或某个唯一标识符的引用,以供日后从原始列表中选择个别简报。

0

做这样的事情在你看来:

<%= Html.CheckBox("cbNewColors", true) %><label for="cbNewColors">New colors</label> 
在你的控制器

,做这样的事情:

bool bChecked = form["cbNewColors"].Contains("true"); 
0

你必须做一些手工的工作,因为MVC增加了隐藏字段对于每个复选框,并依靠模型联编程序处理来自表单提交(如果已选中该框)的值true,false

假设你有你的观点提供唯一的ID,我提出以下建议:

  1. 手动创建的复选框(即不使用HTML辅助)具有相同的名称

    < INPUT TYPE = “复选框” 名称= “通讯” 值= “NL_ [ID]” ID = “NL_ [ID]”/> [名称] < /标签>

  2. 接受一个string[] newsletters参数到动作即处理帖子。 (您可以需要接受一个字符串,然后把它分解的逗号,我不记得array newslettersArray = newsletters.Split(',');;)

  3. 将字符串到通讯ID列表做这样的事情:

    变种。IDS = newsletters.Select(N => int.Parse(n.Substring(2))ToList();

相关问题