gpt4 book ai didi

asp.net-mvc - ASP.Net MVC 3 字典绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 05:46:26 25 4
gpt4 key购买 nike

您好,我在 MVC 3 项目中定义了一个模型对象,该对象具有如下 Dictionary 属性:

MyObj.ObjDictionary<string,string>

我有两个 Controller 方法,一个处理返回 View ,另一个处理来自 View 的 POSTed 表单
public ActionResult Scanner(string val_1, string val_2, string val_3)
{
//Fetch sessionObj from Model
MyObj sessionObj = getSessionObj(val_1, val_2, val_3);

//At this point model.ObjDictionary<string,string> contains data
return View(sessionObj);
}

[HttpParamAction]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Scanner(MyObj model)
{
//At this point model.ObjDictionary<string,string> is null
//i.e. binding is not being properly achieved

//Validate POSTed data
}

在 View 中,我遍历每个键值对 (kvp)。必须以这种方式完成,因为该属性是动态的,而且我无法知道会有多少字典值。
@using (Html.BeginForm("Action", "Home")) 
{
@foreach (var kvp in Model.ObjDictionary)
{
<span>@Html.Label("Scan " + @kvp.Key)</span>
<span>@Html.TextBox(kvp.Key, "", new { @style = "font-size:Medium;width:400px;" })</span>
}
<input type="submit" name="Cancel" value="Cancel" />
<input type="submit" id="Scanner" name="Scanner" value="Scanner" />
}

目标是为用户提供一种输入数据并将数据绑定(bind)到特定键值的方法。我的问题是 Model.ObjDictionary 在发布时为空。我不确定我做错了什么,我阅读了 this文章,但这假设字典中预先存在值。 ModelBinder 有没有办法将用户输入的数据绑定(bind)到映射到特定键的字典值?

最佳答案

您引用的文章回答了您的问题,您只需要为您的控件提供正确的名称,请尝试:


@using (Html.BeginForm("Action", "Home")) {
var i = 0;
foreach (var kvp in Model.ObjDictionary)
{
@Html.Hidden("ObjDictionary[" + i + "].Key", kvp.Key)@kvp.Key
<span>@Html.TextBox("ObjDictionary[" + i + "].Value", kvp.Value, new { @style = "font-size:Medium;width:400px;" })</span>
i++;
<br />
}

<input type="submit" value="Submit" />
}

关于asp.net-mvc - ASP.Net MVC 3 字典绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10626659/

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