C# 用于动态确定使用哪个母版页的C-If语句-MVC2

C# 用于动态确定使用哪个母版页的C-If语句-MVC2,c#,asp.net-mvc-2,master-pages,C#,Asp.net Mvc 2,Master Pages,我的MVC应用程序中有两个母版页。我希望能够使用其中一个,或者根据用户的角色使用另一个。与此类似的内容,显然还有一些验证等: <% if(User.IsInRole("One")) { %> <%@ Page Language="C#" MasterPageFile="~/Views/Shared/One.Master" Inherits="System.Web.Mvc.ViewPage<MyApp.Data.ProductData>" %> <

我的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、图像、颜色,因此有必要使用不同的母版页

如果有人能帮助我,我会非常感激,或者如果有人有其他选择,或许更好的解决方案,我也会非常感激


谢谢

您可以通过动态更改。

您可以通过动态更改。

我建议在母版页文件中进行选择,而不是选择要使用的母版页文件。

我建议在母版页文件中进行选择,而不是选择要使用的母版页文件。

因为您正在使用ASPX在ASP.net MVC应用程序中查看。 ASP.net MVC ASPX Webform视图仍然派生自Page类,所以您可以在中使用以下代码 您的aspx视图

<%@ 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>

当您在ASP.net MVC应用程序中使用ASPX视图时。 ASP.net MVC ASPX Webform视图仍然派生自Page类,所以您可以在中使用以下代码 您的aspx视图

<%@ 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>

这不是一个糟糕的答案,但也许你可以用一个相关的代码片段来补充它。这不是一个糟糕的答案,但也许你可以用一个相关的代码片段来补充它。