MVC视图使项目仅对某些角色可见

时间:2011-10-10 03:28:07

标签: asp.net-mvc

我正在使用MVC,在我的一个视图中,我有一个下拉列表,我只想让某些管理员查看。

我是这样做的:

@if (User.IsInRole("Administrator")) {
        @Html.DropDownListFor(...)
    }

但是我被告知这不是解决问题的方法,而是在viewModel中设置下拉列表的可见性。

下拉列表甚至不存在于视图模型中。我有:

public SelectList AreaList { get; set; }

用于填充下拉列表。

任何人都可以就我可能采取的措施给出一些改进建议吗?

2 个答案:

答案 0 :(得分:2)

我不是你被告知的,但我认为他们的意思是你会在视图模型中设置一个标志,例如bool showDropDown,然后在你的视图中检查它的状态标志。

然而,没有“正确”的方法来做到这一点。我认为你的第一种方法就好了。

答案 1 :(得分:0)

我认为他们的意思是在ViewModel中放置一个标志,指定是否应该呈现下拉列表。

此更改

@if (User.IsInRole("Administrator")) {
    @Html.DropDownListFor(...)
}

@if (Model.ShouldDisplayAdminControls) {
    @Html.DropDownListFor(...)
}

如果您的团队不是/不想使用自定义成员资格提供程序,或者如果您想要远离成员资格而提供该选项,则可能出现这种情况(IsInRole方法导致您的视图成为耦合到您的用户管理组件)