Установить значение свойства на главной странице со страницы содержимого

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

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

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

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

Ответы на вопрос(5)

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

Решение Вопроса

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

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

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*/ };
    }
}

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

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

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

public string Section { get; set; }

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

Master.Section = "blog";

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

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», иначе она не будет компилироваться.

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

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

((MyMasterPageType)Page.Master).Roles = "blah blah";
 NotMe02 мая 2017 г., 21:01
@ Niloofar: при создании главной страницы создается новый класс. В моем примере вы бы заменилиMyMasterPageType с названием вашего фактического класса главной страницы.
 n3verLieMe04 февр. 2015 г., 07:42
Благодарность. только этот подход работал для меня.
 Niloofar02 мая 2017 г., 11:11
Что такое MyMasterPageType?

Ваш ответ на вопрос