假设我有两个正在访问表单的用户。一个是管理员用户,一个是普通用户。而且只有管理员可以查看和编辑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?
答案 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")
如果您需要更多信息: