c# - If语句动态决定使用哪个母版页

本文关键字:母版页 决定 If 语句 动态 | 更新日期: 2023-09-27 18:18:11

在我的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,图像,颜色将被使用,所以有必要使用不同的母版页。

如果有人可以帮助我,我会非常感激,或者如果有人有任何替代(可能更好)的解决方案,我也会很感激。

谢谢。

c# - If语句动态决定使用哪个母版页

当你在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>

您可以通过ViewMasterPage.MasterPageFile动态更改。

我建议在中选择而不是选择要使用的母版文件