And*_*nko 11 c# data-binding asp.net-mvc
是否有可能绑定这种财产?
public KeyValuePair<string, string> Stuff { get; set; }
Run Code Online (Sandbox Code Playgroud)
我试图在视图中使用以下代码,但它不起作用:
<%=Html.Text("Stuff", Model.Stuff.Value)%>
<%=Html.Hidden("Model.Stuff.Key", Model.Stuff.Key)%>
Run Code Online (Sandbox Code Playgroud)
KeyValuePair<K,V>是一个结构,而不是一个类,所以每次调用你的Stuff属性都会返回一个原始的副本KeyValuePair.因此,当您绑定到Model.Stuff.Value和之后Model.Stuff.Key,您实际上正在处理两个不同的实例KeyValuePair<K,V>,其中没有一个是您的模型中的实例.因此,当它们更新时,它不会更新模型中的Stuff属性... QED
顺便说一句,Key和Value属性是只读的,因此您无法修改它们:您必须替换KeyValuePair实例
以下解决方法应该有效:
型号:
private KeyValuePair<string, string> _stuff;
public KeyValuePair<string, string> Stuff
{
get { return _stuff; }
set { _stuff = value; }
}
public string StuffKey
{
get { return _stuff.Key; }
set { _stuff = new KeyValuePair<string, string>(value, _stuff.Value); }
}
public string StuffValue
{
get { return _stuff.Value; }
set { _stuff = new KeyValuePair<string, string>(_stuff.Key, value); }
}
Run Code Online (Sandbox Code Playgroud)
查看:
<%=Html.Text("Stuff", Model.StuffValue)%>
<%=Html.Hidden("Model.StuffKey", Model.StuffKey)%>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14887 次 |
| 最近记录: |