(我是MVC的新手).
在我的应用程序中,我没有具有属性的类意义上的模型.哦,不,它更简单:我的用户基本上为系统中其他地方的各种键设置填写一堆字符串值(键是任意的,提前不知道,因此没有预编码类)1.
我的"模特"因此只是:
Dictionary<string, string>
Run Code Online (Sandbox Code Playgroud)
很简单.
据我所知,模型绑定,html助手,模型状态,验证摘要都依赖于任意类属性的反射.但他们可以只使用我字典中的键/值吗?
例如,我可以:
<label for="Name">Name:</label>
<%= Html.TextBox("Name") %>
<%= Html.ValidationMessage("Name", "*") %>
Run Code Online (Sandbox Code Playgroud)
和:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Dictionary<string, string> valuesEntered)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
并让MVC使用"Name"我的Dictionary<string, string>"模型"中的键/值来做所有的幕后魔术?(MVC 1.0最好,但是如果在2.0中更好地解决这个问题,请稍微说清楚,因为我仍然想知道)?
1:听起来很傻我很有信心.它适用于报表应用,其中"键"是报表参数名称,"值"是报表运行的值.
MVC 1.0中的默认模型绑定器可以绑定到字典,只要它使用魔术表单字段标识符'dictionaryName[index].key'和'dictionaryName[index].value',其中dictionaryName是字典参数的名称,索引是一个从0开始的序列号。通常,“键”值是隐藏字段,“值”值是文本字段。在你的例子中:
<%= Html.Hidden("valuesEntered[0].key", "Name") %>
<%= Html.TextBox("valuesEntered[0].value") %>
<%= Html.ValidationMessage("valuesEntered[0].value", "*") %>
Run Code Online (Sandbox Code Playgroud)
据我了解,MVC 2 中与字典的绑定是不同的。
| 归档时间: |
|
| 查看次数: |
2484 次 |
| 最近记录: |