ASP.NET MVC - 显示没有更新值的模型字段

问题描述:

我目前正在研究ASP.NET MVC2中的强类型更新视图。除了用户可以更新的属性之外,还有一些属性是用户不应该能够更新的,但是我想要在页面上显示(例如,创建日期)。ASP.NET MVC - 显示没有更新值的模型字段

下面是我展示这些不可编辑的字段的例子:

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

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

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

+0

感谢您的回答。我担心我依赖于可能伪造包含主键的字段的帖子值。我将研究如何使用UpdateModel按照你所说的去做。 – Andrew 2010-11-10 16:41:46

+0

您还可以将绑定属性附加到实体类或函数参数:http://ittecture.wordpress.com/2009/05/01/tip-of-the-day-199-asp-net-mvc-defining -model结合,明确/ – ZippyV 2010-11-10 21:49:46

你需要使用一个隐藏字段,像这样:

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

这将是除了显示器领域。

+0

隐藏字段可以在客户端更改。这是一种不安全的方式。 – Egor4eg 2011-06-21 08:03:12