假设我有一个模型:
public class HashTable {
public string sKey { get;set; }
public string sValue { get:set; }
}
然后我在视图中渲染它:
<div>Please enter the key/value pair:</div>
@Html.LabelFor(h => h.sKey, "Key");
@Html.TextBoxFor(h => h.sKey);
@Html.LabelFor(h => h.sValue, "Value");
@Html.TextBoxFor(h => h.sValue);
然后我将它保存在控制器中:
db.HashTable.Add(themodel);
然后我在一个视图中回忆它,但我只想更改值:
<div>Please enter the value:</div>
Key: @Model.sKey
@Html.LabelFor(h => h.sValue, "Value");
@Html.TextBoxFor(h => h.sValue, Model.sValue);
然后我将其提交给控制器。问题是如果我这样做:
db.Entry(oldmodel).CurrentValues.SetValues(themodel);
它使“key”字段为空,因为视图上没有它的元素。
这是一个非常复杂的系统的非常简单的示例(代码可能并不完全准确),其中某些表单字段可能会或可能不会根据工单的状态显示在视图中。我真正需要的是一种方法,这样如果表单字段没有显示在视图中,它就不会在数据库中更新。有任何想法吗?提前致谢!