2009-07-02 16 views
7

Her sayfa yüklendiğinde ana sayfamdaki bir değişkene veri iletmem gerekiyor.İçerik Sayfasından Ana Sayfada Özellik Değerini Ayarla Sayfa

Her içerik sayfasında hangi sayfaya erişebilmek için gerekli rolleri belirlediğimi belirten bir RequiredRoles dizesi sahibim.

Ana sayfamda, bu diziyi alan bir yöntem var ve geçerli kullanıcının bu rollerden bir veya daha fazlasında olup olmadığını kontrol ediyor.

Bunu nasıl yönetirim? Temel olarak her sayfanın bir String [] RequiredRole tanımlı olmasını istiyorum ve ana sayfa her çağrıya bunu yükleyecek ve kullanıcıların bu rollerde olup olmadığını kontrol edecek.

cevap

10

Ana sayfanızda bir özellik oluşturun ve içerik sayfadan erişebilirsiniz:

Usta sayfası:

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

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

İçerik Sayfa:

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

Typecast Page.Master efendin sayfasına gibi bir şey yapıyorsun ki:

((MyMasterPageType)Page.Master).Roles = "blah blah"; 
+1

Teşekkürler. sadece bu yaklaşım benim için çalıştı. – n3verLieMe

+0

MyMasterPageType nedir? – Niloofar

+1

@Niloofar: Ana sayfa oluşturduğunuzda, yeni bir sınıf oluşturur. Örneğimde 'MyMasterPageType' yerine gerçek ana sayfa sınıfınızın adını yazdınız. – NotMe

4

ben gibi bir baz tüm içerik sayfaları için sınıf, bir şeyler yaratarak gitmek istiyorum:

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 
     } 

    } 
} 

Sonra her sayfa BasePage devraldığı yapmak ve her bir RequiredRoles

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

tanımlayan Bu, temizlik ve OnLoad işleyici kodunun KURUTMA avantajına sahiptir. Ve BasePage'den devralan her sayfanın bir "RequiredRole" tanımlaması veya derlememesi gerekir. Çocuğunuz sayfasına

+0

Bu bir daha yeterince yetkilendirilmemiş. OP'nin çözmeye çalıştığı kesin meseleden farklı olsa bile gerekliliğin ele alınmasında doğru bir yaklaşımdır. – NotMe

24

Ekleme sayfa yönergesi:

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

Ardından ana sayfaya özelliğini ekleyin: Böyle bu özelliği erişebilirsiniz

public string Section { get; set; } 

:

Master.Section = "blog"; 
0

CType (Master.FindControl ("lblName"), Etiket). Metin = txtId.Text CType (Master.Fi ndControl ("pnlLoginned"), Panel) .Visible = True

İlgili konular