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所指出的,这将使用户能够使用浏览器调试工具编辑值


另一种解决方案可以是创建视图特定的模型,并且只将要调整的值映射到数据库对象。更多信息请点击此处:

如果他们在浏览器调试工具中打开页面,技术上可以对其进行编辑。没有想到,他们可以这样做是的。如果他们在浏览器调试工具中打开页面,技术上可以对其进行编辑。没有想到,他们可以这样做是的。