MVC5-动态选择在表单中显示哪些属性

时间:2018-10-14 15:44:09

标签: asp.net-mvc forms dynamic

假设我有两个正在访问表单的用户。一个是管理员用户,一个是普通用户。而且只有管理员可以查看和编辑AdminOnlyField,然后说我有以下课程:

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

}

我不知道如何使用AdminOnlyField有条件地使@html.BeginForm()可见和可编辑,我知道您可以使用ViewBag中的属性,但是在这种情况下,所有信息我需要从数据库回来,所以我认为我无法利用ViewBag

这是MVC可以完成的事情还是我需要探索Angular?

1 个答案:

答案 0 :(得分:0)

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

但是,如果您想隐藏此机制,可以制作一个EditorTemplate。

文件必须位于位置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