1

我目前正在创建一个应用程序,它在 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 字段的字段变为空白。有没有更好的方法来做到这一点,所以它不会发生?

非常感谢,

克里斯3

4

1 回答 1

1

好吧,它们是相当多的解决方案。

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

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

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

编辑 如果您想让显示的值在表单中传递,但不是“可见可编辑”,您必须将其作为隐藏字段传递。

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

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

顺便说一句,如果您不想编辑此字段,则不介意它是否返回空白。只需更改更新实体的方式即可。

于 2013-05-15T10:34:05.407 回答