C # - оператор If для динамического определения, какую главную страницу использовать - MVC 2 - PullRequest
1 голос
/ 19 декабря 2011

У меня есть две главные страницы в моем приложении 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, изображения, цвета, поэтому необходимо использовать другую главную страницу.

Если бы кто-нибудь мог помочь, я был бы очень признателен, или если у кого-то есть какие-нибудь альтернативные (и, возможно, лучшие) решения, я также был бы благодарен.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 21 декабря 2011

Поскольку вы используете ASPX View в ASP.net MVC Application.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>
1 голос
/ 19 декабря 2011

Вы можете изменить его динамически через ViewMasterPage.MasterPageFile .

0 голосов
/ 19 декабря 2011

Я бы предложил сделать выбор в файле мастер-страницы, а не выбирать, какой файл мастер-страницы использовать.

...