我正在使用MVC,在我的一个视图中,我有一个下拉列表,我只想让某些管理员查看。
我是这样做的:
@if (User.IsInRole("Administrator")) {
@Html.DropDownListFor(...)
}
但是我被告知这不是解决问题的方法,而是在viewModel中设置下拉列表的可见性。
下拉列表甚至不存在于视图模型中。我有:
public SelectList AreaList { get; set; }
用于填充下拉列表。
任何人都可以就我可能采取的措施给出一些改进建议吗?
答案 0 :(得分:2)
我不是你被告知的,但我认为他们的意思是你会在视图模型中设置一个标志,例如bool showDropDown
,然后在你的视图中检查它的状态标志。
然而,没有“正确”的方法来做到这一点。我认为你的第一种方法就好了。
答案 1 :(得分:0)
我认为他们的意思是在ViewModel中放置一个标志,指定是否应该呈现下拉列表。
此更改
@if (User.IsInRole("Administrator")) {
@Html.DropDownListFor(...)
}
要
@if (Model.ShouldDisplayAdminControls) {
@Html.DropDownListFor(...)
}
如果您的团队不是/不想使用自定义成员资格提供程序,或者如果您想要远离成员资格而提供该选项,则可能出现这种情况(IsInRole方法导致您的视图成为耦合到您的用户管理组件)