代码之家  ›  专栏  ›  技术社区  ›  JL1

MVC5-动态选择窗体中显示的属性

  •  0
  • JL1  · 技术社区  · 6 年前

    假设我有两个用户正在访问表单。一个是管理员用户,另一个是普通用户。只有管理员才能查看和编辑 AdminOnlyField 那么假设我有以下课程:

    public class Car
    {
        public string Make {get;set;}
        public string Model {get;set;}
        public string AdminOnlyField {get;set;}
    
    }
    

    我不知道如何有条件地 管理员字段 使用可见和可编辑 @html.BeginForm() ,我知道您可以使用 ViewBag 但在这种情况下,我需要的所有信息都是从数据库中返回的,所以我认为我不能利用 视窗袋 .

    这是MVC可以完成的,还是我需要探索角度?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Illia Larka    6 年前

    最简单的方法是插入 if(User.IsInRole(stringRole))

    然而,如果您想隐藏这个机制,您可以创建一个editoremplate。

    文件必须在适当的位置 Views/Shared/EditorTemplates/EditFormTemplate.cshtml

    对于AdminOnlyField,可以通过模板隐藏此功能。

    @if(User.IsInRole("Admin")
    {
        <div>
            <label>AdminOnlyField: </label>
            @Html.EditorFor(model => Model.AdminOnlyField)
        </div>
    }
    

    用途:

    @Html.EditorForModel("YourCustomTemplateName")
    

    如果您需要更多信息:

    There is more information