gpt4 book ai didi

asp.net-mvc - ASP.Net MVC 从复选框列表返回值

转载 作者:行者123 更新时间:2023-12-02 08:56:09 25 4
gpt4 key购买 nike

我有一个模型,其属性是列表。 MyObjects 只有一个 id、一个描述和一个选定的 bool 属性。

我已设法在我的 View 上将这些项目显示为复选框。我通过以下方式做到了这一点:

 <%foreach (var cat in Model.DefaultCategories)
{%>
<tr>
<td>
<%=cat.Category %>

</td>
<td>
<%=Html.CheckBoxFor(x=>cat.Selected) %>
</td>
</tr>
<%
}%>
</table>

但是,有一个问题。当渲染时,它们最终都具有相同的名称。这是我的列表的一部分:

        <tr>
<td>
Medical

</td>
<td>
<input id="cat_Selected" name="cat.Selected" type="checkbox" value="true" /><input name="cat.Selected" type="hidden" value="false" />
</td>

</tr>

<tr>
<td>
Salary

</td>
<td>
<input checked="checked" id="cat_Selected" name="cat.Selected" type="checkbox" value="true" /><input name="cat.Selected" type="hidden" value="false" />
</td>
</tr>

它们都被命名为“cat.Selected”。

我该如何解决这个问题?

然后,当我提交时,我需要迭代它们。使用不同的名称,我假设我可以在我的 HttpPost 方法中获取它们:

        [HttpPost]
public ActionResult Modify(int id, FormCollection formValues)
{
PayeeDto p = new PayeeDto { Name = Request.Form["name"], PayeeId = id };

Services.PayeeServices.Save(p);
return RedirectToAction("Index");
}

FormCollection 会有不同的名称吗?目前,它只有一个“cat.selected”项目。

最佳答案

有一种方法可以通过使用带有 [] 的名称来将集合提交给您的操作。如此处所述 http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

<% for (int i = 0; i < Model.DefaultCategories.Count; i++) { %>
<td>
<input type="checkbox" name="[<%= i %>].Selected" <% Model.DefaultCategories[i].Selected ? "checked=\"checked\"" : string.Empty %>/>
</td>
<% }%>

然后您的操作可以采用这样的模型集合

public ActionResult Modify(int id, ICollection<UpdateModel> updates)
{}

关于asp.net-mvc - ASP.Net MVC 从复选框列表返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4731789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com