gpt4 book ai didi

asp.net-mvc - 如何使用 ASP.NET MVC 将字典绑定(bind)到一组复选框?

转载 作者:行者123 更新时间:2023-12-01 14:46:19 25 4
gpt4 key购买 nike

我的需求是'绑定(bind)'

Dictionary<MyType, bool> 

到 asp.net mvc 中的复选框列表。

我对如何实现这一点感到困惑。谁能帮帮我?

最佳答案

假设 MyType 有一个名为 Name 的字符串属性从中您将获得复选框的名称。请注意,我已将其更改为以 MyType 开头所以我们可以很容易地在服务器上区分它。如果您有其他方法来确定哪些字段是复选框,则可能不需要此步骤。

<% foreach (var pair in model.ChecboxDictionary) { %>
<%= Html.CheckBox( "MyType." + pair.Key.Name, pair.Value ) %>
<% } %>

Controller(这使用 FormParameters,但您也可以尝试将带有前缀“MyType”的模型直接绑定(bind)到 Dictionary<string,bool>,然后进行翻译。

public ActionResult MyAction( FormParameters form )
{
var dict = ... fill dictionary with original values...
foreach (var key in dict.Keys)
{
if (!form.Keys.Contains( "MyType." + key.Name ))
{
dict[key] = false;
}
}

foreach (var key in form.Keys.Where( k => k.StartsWith("MyType.")))
{
var value = form[key].Contains("on"); // just to be safe
// create or retrieve the MyType object that goes with the key
var myType = dict.Keys.Where( k => k.Name == key ).Single();

dict[myType] = value;
}

...
}

您还可以在客户端使用一些 javascript 添加 name=off在提交之前为每个“未选中”复选框设置参数,这将避免填充原始字典的需要,因为您将能够直接派生所有字典元素的值。

关于asp.net-mvc - 如何使用 ASP.NET MVC 将字典绑定(bind)到一组复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/962189/

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