在asp.net mvc3中限制编辑功能

时间:2013-05-15 10:19:22

标签: asp.net-mvc-3

我目前正在创建一个在MVC 3中使用EF引用数据库的应用程序。我使用了脚手架读/写数据,并希望能够对数据库条目进行一些编辑,但不能对所有字段进行编辑。有没有办法阻止用户编辑编辑表单上的某些字段,从而编辑数据库?

自我的初步提问以来,我试图通过更改

来限制编辑功能
    <div class="editor-label">
        @Html.LabelFor(model => model.Clause)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Clause)
        @Html.ValidationMessageFor(model => model.Clause)
    </div>

使用

    <div class="editor-label">
        @Html.LabelFor(model => model.Clause)
    </div>
    <div class="editor-field">
        @Html.DisplayFor(model => model.Clause)
    </div>

但是,实际保存编辑时,引用DisplayFor字段的字段会显示为空白。有没有更好的方法这样做,所以它不会发生?

非常感谢,

Chri3

1 个答案:

答案 0 :(得分:1)

嗯,他们有很多解决方案。

  1. 您只能在视图中显示您想要编辑的字段(不安全,恶意的字段可能会在您的表单中添加不需要的字段值)。

  2. 您只能手动更新控制器中所需的字段。

  3. 您可以使用ViewModels,它只会显示您想要编辑的属性(我建议您选择该解决方案)。

  4. 修改 如果您希望在表单中传递显示的值,但不是“可视化可编辑”,则必须将其作为隐藏字段传递。

    @Html.DisplayFor(model => model.Clause)
    @Html.HiddenFor(model => model.Clause)
    

    但这是解决方案1.在我的回答中,可能是更糟糕的一个。

    顺便说一下,如果你不想编辑这个字段,你不应该介意它是否空白。只需更改实体更新方式即可。