Вопрос по asp.net – Установить значение свойства на главной странице со страницы содержимого

8

Мне нужно передавать данные в переменную на главной странице каждый раз, когда страница загружается.

У меня есть строка [] RequiredRoles, которую я устанавливаю на каждой странице содержимого, определяющая, какие роли необходимы для доступа к этой странице.

На моей главной странице у меня есть метод, который берет этот массив и проверяет, находится ли текущий пользователь в одной или нескольких из этих ролей.

Как бы я справился с этим? Я в основном хочу, чтобы на каждой странице были определены String [] RequiredRoles, и главная страница будет загружать это при каждом вызове и проверять, находятся ли пользователи в этих ролях.

Ваш Ответ

5   ответов
10

ницы содержимого:

Основная страница:

public partial class BasePage : System.Web.UI.MasterPage
{
    private string[] _RequiredRoles = null;

    public string[] RequiredRoles
    {
        get { return _RequiredRoles; }
        set { _RequiredRoles = value; }
    }
}

Содержание страницы:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load()
    {
        Master.RequiredRoles = new string[] { /*set appropriate roles*/ };
    }
}
24

Добавьте директиву страницы к вашей дочерней странице:

<%@ MasterType VirtualPath="~/MasterPage.master" %>

Затем добавьте свойство на главную страницу:

public string Section { get; set; }

Вы можете получить доступ к этому свойству следующим образом:

Master.Section = "blog";
14

так что вы делаете что-то вроде:

((MyMasterPageType)Page.Master).Roles = "blah blah";
Благодарность. только этот подход работал для меня. n3verLieMe
Что такое MyMasterPageType? Niloofar
@ Niloofar: при создании главной страницы создается новый класс. В моем примере вы бы заменилиMyMasterPageType с названием вашего фактического класса главной страницы. NotMe
6

создав базовый класс для всех контентных страниц, что-то вроде:

public abstract class BasePage : Page
{
    protected abstract string[] RequiredRoles { get; }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        // display the required roles in a master page
        if (this.Master != null) {
            // value-assignment
        }

    }
}

И тогда я делаю каждую страницу наследуемой от BasePage, и каждая определяет RequiredRoles

public partial class _Default : BasePage
{
    protected override string[] RequiredRoles
    {
        get { return new[] { "Admin", "Moderator" }; }
    }
}

Это имеет преимущество в чистоте и сухости кода обработчика OnLoad. И каждая страница, которая наследуется от BasePage, должна определять «RequiredRoles», иначе она не будет компилироваться.

За этого не проголосовали достаточно. Это правильный подход к обработке требования, даже если он отличается от точного вопроса, который ОП пытался решить. NotMe
0

lblName"), Label) .Text = txtId.Text ;pnlLoginned"), Panel) .Visible = True

Похожие вопросы