ASP.NET MVC 3-使用复选框选择项目

本文关键字:复选框 选择 项目 NET MVC ASP | 更新日期: 2023-09-27 17:57:56

我有一个MVC 3应用程序,它有一个页面,用户可以在其中请求有关我们服务的更多信息。

当用户从下拉列表中选择他们的状态时,我想使用jQueryajax来获取我们在该状态下提供的产品列表。对于每个产品,我希望在产品名称旁边显示一个复选框。然后用户可以选择他们感兴趣的产品。

我想将选定的"产品"绑定到此视图的模型上的"列表"属性。因此,该模型将具有名称、电子邮件等属性和列表属性。下面是我试图绑定到的模型类的一个示例:

public class RequestInformationModel
{
    public string Name { get; set; }
    public string Email { get; set; }
    public List<Product> Products { get; set; }
}

这是我将把表格张贴到的控制器方法:

public ActionResult RequestInformation(RequestInformationModel model)
{
    // do stuff
}

关于如何做到这一点,有什么建议吗?非常感谢。

ASP.NET MVC 3-使用复选框选择项目

如果您在产品对象中的字段名称前面加上方括号中的列表名称及其索引,那么MVC将为您绑定列表

例如

<input type="checkbox" name="Products[0].InterestedInCheckbox" />
<input type="checkbox" name="Products[1].InterestedInCheckbox" />

在这种情况下,Product对象需要一个名为InterestedInCheckbox 的布尔属性

您应该有从0开始的序列索引,这样方法才能工作(如果不是这样的话,您需要一个隐藏字段和一个稍微不同的技术)

最后,我将使用Html复选框助手来创建复选框,因为这将在所需的复选框之后输出一个隐藏字段:

(以下代码未经测试)

@for (var i = 0; i < Model.Count; i++)
{
    @Html.CheckBox(string.Format("Products[{0}]", i), Model[i])
}

我想你想要的是这样的东西:

/* Handles ajax request */
[HttpPost]
public ContentResult(string selectedListBoxItem)
{
  string content = "";
  /* TODO: Query DB to get product suggestions based on selectedListBoxItem */
  content = "<input type='checkbox' id='productId1' name='productSuggestion' value='productId1'>";
  content += "<input type='checkbox' id='productId2' name='productSuggestion' value='productId2'>";
  content += "<input type='checkbox' id='productId2' name='productSuggestion' value='productId2'>";
  return Content(content);
}
 /* Handles final submit */
[HttpPost]
public ActionResult HandleSubmit(string nameOfCheckboxCollection)
{
  string[] arrayChecked = nameOfCheckboxCollection.Split(",");
  foreach(string s in arrayChecked ) { 
      Model.addProduct(s); 
   } 
}