C# 绑定字典的模型
我的控制器操作方法将C# 绑定字典的模型,c#,asp.net-mvc-2,dictionary,C#,Asp.net Mvc 2,Dictionary,我的控制器操作方法将字典传递给视图。我认为: <% foreach (var item in Model.Items) { %> <%: Html.Label(item.Key, item.Key)%> <%: Html.TextBox(item.Key, item.Value)%> <% } %> 下面是我处理POST操作的操作方法: [HttpPost] public virtual ActionResult MyMethod(Dicti
字典
传递给视图。我认为:
<% foreach (var item in Model.Items) { %>
<%: Html.Label(item.Key, item.Key)%>
<%: Html.TextBox(item.Key, item.Value)%>
<% } %>
下面是我处理POST操作的操作方法:
[HttpPost]
public virtual ActionResult MyMethod(Dictionary<string, double?> items)
{
// do stuff........
return View();
}
[HttpPost]
公共虚拟操作结果MyMethod(字典项)
{
//做事。。。。。。。。
返回视图();
}
当我在文本框中输入一些值并点击submit按钮时,PostAction方法是否没有返回任何项目?我做错了什么?我建议您阅读输入字段的命名方法,以便绑定到词典。因此,您需要为密钥添加一个额外的隐藏字段:
<input type="hidden" name="items[0].Key" value="key1" />
<input type="text" name="items[0].Value" value="15.4" />
<input type="hidden" name="items[1].Key" value="key2" />
<input type="text" name="items[1].Value" value="17.8" />
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new[]
{
new MyViewModel { Key = "key1", Value = 15.4 },
new MyViewModel { Key = "key2", Value = 16.1 },
new MyViewModel { Key = "key3", Value = 20 },
};
return View(model);
}
[HttpPost]
public ActionResult Index(IEnumerable<MyViewModel> items)
{
return View(items);
}
}
编辑器模板(~/Views/Home/EditorTemplates/MyViewModel.ascx
):
x、 键)%%>
x、 值)%%>
public class MyViewModel
{
public string Key { get; set; }
public double? Value { get; set; }
}
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new[]
{
new MyViewModel { Key = "key1", Value = 15.4 },
new MyViewModel { Key = "key2", Value = 16.1 },
new MyViewModel { Key = "key3", Value = 20 },
};
return View(model);
}
[HttpPost]
public ActionResult Index(IEnumerable<MyViewModel> items)
{
return View(items);
}
}
<% using (Html.BeginForm()) { %>
<%: Html.EditorForModel() %>
<input type="submit" value="OK" />
<% } %>
<%@ Control
Language="C#"
Inherits="System.Web.Mvc.ViewUserControl<Models.MyViewModel>" %>
<%: Html.HiddenFor(x => x.Key) %>
<%: Html.TextBoxFor(x => x.Value) %>