C# - 动态确定要使用哪个母版页的 If 语句 - MVC 2

标签 c# asp.net-mvc-2 master-pages

我的 C# MVC 应用程序中有两个母版页。我希望能够做的是根据用户的“角色”使用一个或另一个。与此类似的东西(显然需要更多验证等):

<% if(User.IsInRole("One")) { %>
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/One.Master"
    Inherits="System.Web.Mvc.ViewPage<MyApp.Data.ProductData>" %>
<% } else if { %>
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Other.Master"
    Inherits="System.Web.Mvc.ViewPage<MyApp.Data.ProductData>" %>
<% } %>

我已经看到可以对页面元素(例如菜单、图像等)执行此操作的答案。是否可以对整个母版页执行此操作?在我的情况下,根据角色,将使用不同的 css、图像、颜色,因此有必要使用不同的母版页。

如果有人能提供帮助,我将不胜感激,或者如果有人有任何替代(并且可能更好)的解决方案,我也将不胜感激。

谢谢。

最佳答案

当您在 ASP.net MVC 应用程序中使用 ASPX View 时。 ASP.net MVC ASPX(Webform) View 仍然派生自 Page 类,因此您可以在中使用以下代码 你的 aspx View 。

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage"  %>
<script language="C#" runat="server">
    protected void Page_PreInit(object sender, EventArgs e)
    {
        if (User.IsInRole("Admin"))
        {
            this.MasterPageFile = "~/Views/Shared/Site2.Master";
        }
        else
        {
            this.MasterPageFile = "~/Views/Shared/Site.Master";
        }
    }
</script>

关于C# - 动态确定要使用哪个母版页的 If 语句 - MVC 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8560543/

相关文章:

c# - 防止在编辑器中添加组件

c# - 如何自动创建用户备份?

c# - Firefox 没有 Access-Control-Allow-Origin,但适用于 Chrome 和 Safari

asp.net-mvc - ASP.NET MVC Authorize 属性在 IE 和 FireFox 中的行为不同

c# - MasterPage 中的 ValidationSummary 隐藏成功标签

c# - 从子窗体访问父窗体上的控件

asp.net-mvc - 如何使用可空类型的强类型 HTML 助手?

jquery - 从 ASP.NET MVC2 应用程序执行 Ajax 调用时出现问题

html - 显示主页标题图像的新文档对话框

c# - Visual Studio 2012 : How to create a web form using Master Page