[asp.net-mvc]将发送到不同的页面,根据 Web.config Razor

发布时间: 2017/3/25 10:54:48
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

所以我想要将显示不同的布局,将在 web.config 中定义变量取决于谁在使用它的设备状态页。 我应该创建一个单独的控制器,每个视图? 一些背景的功能应该是类似但一些将来可能会不同。 还是有相同的 cshtml 文件,隐藏 html 标记取决于谁在使用它,或不?

我想做些类似的︰

@if(System.Configuration.ConfigurationManager.AppSettings["IsSuperUser"] == "true")
{
    <a href="@Url.Action("SuperUserIndex", "Status")">Status</a>
}
else {
    <a href="@Url.Action("UserIndex", "Status")">Status</a>
}

或这是一个糟糕的主意吗?

解决方法 1:

有几个选项,这一切取决于您的需求和偏好。

您的代码将工作,但是你也必须仔细检查权限在您的控制器 !例如,您的 url 将被"超级用户/状态"和"用户/状态"。现在,什么阻止非超级用户的地址栏键入"-超级用户-状态"呢?

一个重要的规则,从来没有信任最终用户 !假设,他们不会做你打算要做他们。

考虑到所有,我倾向于将变量模式中要包括你要标识的用户级别 (超级 vs 非超级),然后用它来确定在您的视图布局。请记住,您还可以更改变量/表达式基于视图的布局。

@Layout = Model.IsSuperUser ? "_SuperLayout.cshtml" : "_RegularLayout.cshtml";
赞助商