ASP.Net MVC - 将查看中的选定数据传递给控制器(帮助!)
我有一个模型(实体类)通讯。我将一份新闻通讯列表传递给一个视图,并在每张新闻通讯的一个表格中显示新闻通讯的列表。除了每个通讯行之外,还有一个复选框。我将通过选中复选框并单击发送按钮来选择要发送的新闻快讯。ASP.Net MVC - 将查看中的选定数据传递给控制器(帮助!)
如何将选定的新闻快递传递给控制器?
谢谢。
在视图:
<input type="checkbox" name="newsletterIds" value="<%=newsletter.Id%>"/>
在您的目标控制器中:
public ActionResult SendNewsletters(int[] newsletterIds)
{
... do something with the ids...
}
只需将一个名为Selected的布尔值添加到您的实体类中,该实体类在传回控制器时会告诉控制器在列表中选择了哪些通讯。
如果你不想用客户端元数据“污染”你的实体类,你可以继承它并在你的派生类中添加所选的布尔值。
或者,您的模型可以简单地包含一个单独的列表,其中包含对所选简报或某个唯一标识符的引用,以供日后从原始列表中选择个别简报。
做这样的事情在你看来:
<%= Html.CheckBox("cbNewColors", true) %><label for="cbNewColors">New colors</label>
在你的控制器
,做这样的事情:
bool bChecked = form["cbNewColors"].Contains("true");
你必须做一些手工的工作,因为MVC增加了隐藏字段对于每个复选框,并依靠模型联编程序处理来自表单提交(如果已选中该框)的值true,false
。
假设你有你的观点提供唯一的ID,我提出以下建议:
-
手动创建的复选框(即不使用HTML辅助)具有相同的名称
< INPUT TYPE = “复选框” 名称= “通讯” 值= “NL_ [ID]” ID = “NL_ [ID]”/> [名称] < /标签>
接受一个
string[] newsletters
参数到动作即处理帖子。 (您可以需要接受一个字符串,然后把它分解的逗号,我不记得array newslettersArray = newsletters.Split(',');
;)-
将字符串到通讯ID列表做这样的事情:
变种。IDS = newsletters.Select(N => int.Parse(n.Substring(2))ToList();
这是否已经解决? – 2009-12-29 19:52:36