MVC视图| *你如何*处理IsAuthenticated方案?

时间:2009-03-31 00:35:54

标签: asp.net-mvc views

通常,在允许成员资格的网站中,您希望为用户提供一些只有在用户登录后才能看到的数据。

对于我的网站,如果登录用户是数据所有者,我想提供一些工具让他们管理数据。

我的问题是这个。你是否在两种不同观点之间分配了这个职责?一个为“常规”用户加载的视图,另一个为“所有者”用户加载的视图。常规用户看到的视图只显示数据。所有者会看到数据和一些管理它的工具。

或者,您是否在单个视图中执行检查并隐藏/显示其中的块(类似于您在常规ASP.NET中的操作)?

这可能是偏好,但是有没有任何技术原因可以将两个视图之间的任务与单个视图分开?

4 个答案:

答案 0 :(得分:5)

我也会选择单一视图选项。 将在您的viewdata上提供特定属性以指示要执行的操作。

<% if (Model.IsOwner) { %>
    //Html for owner
<% } %>

答案 1 :(得分:1)

我个人会选择单视图选项。这样您就不必重复出现在两个视图中的代码。

从技术上讲(或者就MVC模式而言)我想不出有任何理由将其拆分。

答案 2 :(得分:0)

我倾向于将视图分成多个,因为理想情况下你想避免视图中的条件逻辑(理想情况下读取)。

如果您发现这会导致视图之间出现重复,那么您可能会将重复的内容移动到共享的部分内容中。

答案 3 :(得分:0)

我通常会在部分检查角色时使用条件逻辑来渲染额外内容:

<%-- Master Page --%>
<% Html.RenderPartial("DataOwnerStuff"); %>

<%-- Partial --%>
<% if(Roles.IsUserInRole("DataOwner")) { %>
    <h1>Hi Data Owner!</h1>
<% } %>