9

ページが読み込まれるたびに、マスター ページの変数にデータを渡す必要があります。

各コンテンツ ページに設定した RequiredRoles の string[] があり、そのページにアクセスするために必要なロールを定義しています。

私のマスター ページには、この配列を取得するメソッドがあり、現在のユーザーがこれらのロールの 1 つ以上に属しているかどうかを確認します。

これを管理するにはどうすればよいですか?私は基本的に、各ページに String[] RequiredRoles を定義したいと考えています。マスター ページは呼び出しごとにこれをロードし、ユーザーがそれらのロールに属しているかどうかを確認します。

4

5 に答える 5

25

子ページに page ディレクティブを追加します。

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

次に、プロパティをマスター ページに追加します。

public string Section { get; set; }

このプロパティには次のようにアクセスできます。

Master.Section = "blog";
于 2010-07-24T17:01:22.877 に答える
15

Page.Master をマスターページに型キャストして、次のようなことを行います。

((MyMasterPageType)Page.Master).Roles = "blah blah";
于 2009-07-02T00:10:17.987 に答える
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*/ };
    }
}
于 2009-07-02T00:12:30.057 に答える
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 ハンドラー コードをクリーンにし、DRY するという利点があります。また、BasePage から継承するすべてのページは、「RequiredRoles」を定義する必要があります。そうしないと、コンパイルされません。

于 2009-07-02T01:04:15.070 に答える