C# MVC 4:编辑实体时,某些字段返回为null
我有一个编辑视图,其中显示我的一些字段,如下所示:C# MVC 4:编辑实体时,某些字段返回为null,c#,asp.net,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc 4,我有一个编辑视图,其中显示我的一些字段,如下所示: <table> <tr> <td style="width:40%; vertical-align:top"> <div class="editor-label"> @Html.LabelFor(model => model.CREATED_DATE) </div>
<table>
<tr>
<td style="width:40%; vertical-align:top">
<div class="editor-label">
@Html.LabelFor(model => model.CREATED_DATE)
</div>
<div class="editor-field">
@Html.DisplayFor(model => model.CREATED_DATE)
@Html.ValidationMessageFor(model => model.CREATED_DATE)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.LAST_MODIFIED_DATE)
</div>
<div class="editor-field">
@Html.DisplayFor(model => model.LAST_MODIFIED_DATE)
@Html.ValidationMessageFor(model => model.LAST_MODIFIED_DATE)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.STATUS)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.STATUS, Model.Statuses)
@Html.ValidationMessageFor(model => model.STATUS)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.SEVERITY)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.SEVERITY, Model.Severities)
@Html.ValidationMessageFor(model => model.SEVERITY)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.PRIORITY)
</div>
<div id="priorityDiv" class="editor-field">
@Html.EditorFor(model => model.PRIORITY)
@Html.ValidationMessageFor(model => model.PRIORITY)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.DESCRIPTION)
</div>
<div id="descriptionDiv" class="editor-field">
@Html.EditorFor(model => model.DESCRIPTION)
@Html.ValidationMessageFor(model => model.DESCRIPTION)
</div>
</td>
</tr>
</table>
有没有一种方法可以防止用户在视图中编辑字段,而不会将字段内容返回给控制器为空?将它们添加到表单中隐藏字段的视图中:
<div class="editor-field">
@Html.DisplayFor(model => model.CREATED_DATE)
@Html.HiddenFor(model => model.CREATED_DATE)
</div>
<div class="editor-field">
@Html.DisplayFor(model => model.LAST_MODIFIED_DATE)
@Html.HiddenFor(model => model.LAST_MODIFIED_DATE)
</div>
@DisplayFor(model=>model.CREATED\u日期)
@Html.HiddenFor(model=>model.CREATED\u日期)
@DisplayFor(model=>model.LAST\u MODIFIED\u日期)
@Html.HiddenFor(model=>model.LAST\u MODIFIED\u日期)
这将使它们返回到您的Edit
方法,而用户无法编辑它们。您还可以删除此字段的ValidationMessages
,因为它们无法编辑,因此不需要显示验证消息
编辑:
正如@JLRishe所指出的,这将使用户能够使用浏览器调试工具编辑值
另一种解决方案可以是创建视图特定的模型,并且只将要调整的值映射到数据库对象。更多信息请参见此处:将它们添加到表单内隐藏字段中的视图中:
<div class="editor-field">
@Html.DisplayFor(model => model.CREATED_DATE)
@Html.HiddenFor(model => model.CREATED_DATE)
</div>
<div class="editor-field">
@Html.DisplayFor(model => model.LAST_MODIFIED_DATE)
@Html.HiddenFor(model => model.LAST_MODIFIED_DATE)
</div>
@DisplayFor(model=>model.CREATED\u日期)
@Html.HiddenFor(model=>model.CREATED\u日期)
@DisplayFor(model=>model.LAST\u MODIFIED\u日期)
@Html.HiddenFor(model=>model.LAST\u MODIFIED\u日期)
这将使它们返回到您的Edit
方法,而用户无法编辑它们。您还可以删除此字段的ValidationMessages
,因为它们无法编辑,因此不需要显示验证消息
编辑:
正如@JLRishe所指出的,这将使用户能够使用浏览器调试工具编辑值
另一种解决方案可以是创建视图特定的模型,并且只将要调整的值映射到数据库对象。更多信息请点击此处:如果他们在浏览器调试工具中打开页面,技术上可以对其进行编辑。没有想到,他们可以这样做是的。如果他们在浏览器调试工具中打开页面,技术上可以对其进行编辑。没有想到,他们可以这样做是的。