Asp.net mvc 2 ASP.NET MVC-显示模型字段而不更新值

Asp.net mvc 2 ASP.NET MVC-显示模型字段而不更新值,asp.net-mvc-2,Asp.net Mvc 2,我目前正在ASP.NET MVC2中处理强类型更新视图。除了用户可以更新的属性外,还有一些属性用户不应该更新,但我还是希望在页面上显示(例如,创建日期) 以下是我如何显示这些不可编辑字段的示例: <td>Created on:</td> <td><%= Html.DisplayTextFor(model => model.CreatedOn) %></td> 创建于: model.CreatedOn)%%> 但是,当我提交表单

我目前正在ASP.NET MVC2中处理强类型更新视图。除了用户可以更新的属性外,还有一些属性用户不应该更新,但我还是希望在页面上显示(例如,创建日期)

以下是我如何显示这些不可编辑字段的示例:

<td>Created on:</td>
<td><%= Html.DisplayTextFor(model => model.CreatedOn) %></td>
创建于:
model.CreatedOn)%%>

但是,当我提交表单,然后使用controller方法上的断点查看通过POST请求传递给该方法的模型对象时,不可编辑字段被设置为null或空值(例如,CreatedOn日期被设置为1/1/0001)。将使用正确的值传回可编辑字段。当我将表单发布回控制器时,如何在保留原始值的同时显示这些不可编辑字段?

您需要使用如下隐藏字段:

<%= Html.HiddenFor(model => model.CreatedOn) %>
model.CreatedOn)%%>

这将添加到显示字段中。

您不需要原始值。如果使用UpdateModel(或TryUpdateModel),则可以设置应更新的属性。此解决方案也安全得多,因为您明确告诉MVC应该更新哪些属性。

谢谢您的回答。我担心我依赖于可以为包含主键的字段伪造的post值。我将研究如何使用UpdateModel实现您所说的功能。您还可以将绑定属性附加到实体类或函数参数:可以在客户端更改隐藏字段。这是一种不安全的方式。