我目前有一个bog标准的脚手架ASP.NET应用程序,它对SQL后端的数据进行了视图/编辑。
以下是代码示例:
<div class="form-group">
@Html.LabelFor(model => model.UPSCheck, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EnumDropDownListFor(model => model.UPSCheck, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.UPSCheck, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.NASCheck, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EnumDropDownListFor(model => model.NASCheck, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.NASCheck, "", new { @class = "text-danger" })
</div>
</div>
该页面也使用Windows身份验证,用户名可通过
获得@User.Identity.Name
我想要做的是锁定编辑页面的某些部分,以便只允许某些用户更改某些字段。我无法找到符合要求的简单方法,因此我可以与专家联系!
非常感谢任何帮助或指示。
答案 0 :(得分:0)
你可以做这样的事情
<div class="form-group">
@Html.LabelFor(model => model.UPSCheck, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EnumDropDownListFor(model => model.UPSCheck, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.UPSCheck, "", new { @class = "text-danger" })
</div>
</div>
@if(User.Identity.Name=="Domain\UserName")
{
<div class="form-group">
@Html.LabelFor(model => model.NASCheck, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EnumDropDownListFor(model => model.NASCheck, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.NASCheck, "", new { @class = "text-danger" })
</div>
</div>
}
else
{
//you display the read only par
//in addition add
@Html.HiddenFor(model=>model.NASCheck)
}
希望这会对你有所帮助
答案 1 :(得分:0)
asp.net中的默认身份验证模型为RBAC
- Role Based Authentication Control
。这意味着您可以检查用户角色以允许/禁止某些操作。用户是IPrincipal
接口的实现,这意味着您可以使用bool IsInRole(string roleName)
方法检查视图中的访问权限。
以下是IPrincipal
:
http://msdn.microsoft.com/en-us/library/system.security.principal.iprincipal(v=vs.110).aspx
示例(仅当用户为admin
时才显示编辑器字段):
@if(User.IsInRole("admin")){
@Html.TextBoxFor(model => model.yourPropertyName)
}else{
@Html.HiddenFor(model => model.yourPropertyName)
}
其他方式(如果用户不是管理员,则会显示已禁用的字段):
@if(User.IsInRole("admin")){
@Html.TextBoxFor(model => model.yourPropertyName)
}else{
// That will make field disabled
@Html.TextBoxFor(model => model.yourPropertyName, new {disabled= "disabled" })
}