【问题标题】:ASP.NET MVC - Display Model Fields without Updating ValueASP.NET MVC - 显示模型字段而不更新值
【发布时间】:2010-11-09 16:56:26
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: asp.net-mvc-2


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答。我担心我依赖于可以为包含主键的字段伪造的帖子值。我会研究如何使用 UpdateModel 来做你说的。
    • 您也可以将Bind属性附加到实体类或函数参数:ittecture.wordpress.com/2009/05/01/…
    【解决方案2】:

    您需要像这样使用隐藏字段:

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

    这将是您的显示字段的补充。

    【讨论】:

    • 隐藏字段可以在客户端更改。这是一种不安全的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多