我有一个模型(实体类)时事通讯。我将一份时事通讯列表传递给一个视图,并在表格中显示时事通讯列表,每个时事通讯都有一行。除了每个时事通讯行,还有一个复选框。我将通过选中复选框并单击发送按钮来选择要发送的简报。
如何将选定的简报传递给控制器?
感谢。
答案 0 :(得分:1)
在您看来:
<input type="checkbox" name="newsletterIds" value="<%=newsletter.Id%>"/>
在目标控制器中:
public ActionResult SendNewsletters(int[] newsletterIds)
{
... do something with the ids...
}
答案 1 :(得分:0)
只需将一个名为Selected的布尔值添加到您的实体类中,当传递回控制器时,它将告诉控制器在列表中选择了哪些新闻稿。
如果您不想使用客户端元数据“污染”您的实体类,您可以继承它并在派生类中添加选定的bool。
或者,您的模型可以只包含一个单独的列表,其中包含对所选新闻稿的引用或某些唯一标识符,以后可以从原始列表中选择单个新闻稿。
答案 2 :(得分:0)
在您的观点中执行以下操作:
<%= Html.CheckBox("cbNewColors", true) %><label for="cbNewColors">New colors</label>
在你的控制器中,做这样的事情:
bool bChecked = form["cbNewColors"].Contains("true");
答案 3 :(得分:0)
你必须做一些手动工作,因为MVC为每个复选框添加了隐藏字段,并依赖模型绑定器来处理来自表单提交的值true,false
(如果选中该复选框) )。
假设您的观点中有唯一的ID,我建议您使用以下内容:
手动创建具有相同名称的复选框(即不使用Html帮助程序)
&LT; input type =“checkbox”name =“newsletters”value =“nl_ [id]”id =“nl_ [id]”/&gt; [name]&lt; /标签&gt;
在处理帖子的操作中接受string[] newsletters
参数。 (你可能需要接受一个字符串,然后用逗号分隔它,我不记得array newslettersArray = newsletters.Split(',');
;)
将字符串转换为新闻稿ID列表,其行为如下:
var ids = newsletters.Select(n =&gt; int.Parse(n.Substring(2))。ToList();