【问题标题】:limiting edit function in asp.net mvc3限制asp.net mvc3中的编辑功能
【发布时间】:2013-05-15 10:19:21
【问题描述】:

我目前正在创建一个应用程序,它在 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

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

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

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

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

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

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

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

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

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

    【讨论】:

    • 感谢您的评论,请参阅修改后的问题。
    • @Chri3 然后查看修改后的答案 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    相关资源
    最近更新 更多