ASP.Net MVC - 将所选数据从View传递给Controller(帮助!)

时间:2009-12-29 13:52:03

标签: asp.net-mvc

我有一个模型(实体类)时事通讯。我将一份时事通讯列表传递给一个视图,并在表格中显示时事通讯列表,每个时事通讯都有一行。除了每个时事通讯行,还有一个复选框。我将通过选中复选框并单击发送按钮来选择要发送的简报。

如何将选定的简报传递给控制器​​?

感谢。

4 个答案:

答案 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,我建议您使用以下内容:

  1. 手动创建具有相同名称的复选框(即不使用Html帮助程序)

    &LT; input type =“checkbox”name =“newsletters”value =“nl_ [id]”id =“nl_ [id]”/&gt; [name]&lt; /标签&gt;

  2. 在处理帖子的操作中接受string[] newsletters参数。 (你可能需要接受一个字符串,然后用逗号分隔它,我不记得array newslettersArray = newsletters.Split(',');;)

  3. 将字符串转换为新闻稿ID列表,其行为如下:

    var ids = newsletters.Select(n =&gt; int.Parse(n.Substring(2))。ToList();