Avatar billede bongo20 Nybegynder
27. august 2006 - 15:31 Der er 8 kommentarer og
1 løsning

MasterPage properties

Hej

Jeg har problemer med at få fat i properties sat i min masterpage.

Jeg gør sådan i min masterpage:

private int test;
public int Test
{
    set { test = value; }
    get { return test; }
}



og sådan i min page load på siden der bruger min master:

protected void Page_Load(object sender, EventArgs e)
{
    MasterPage myMaster = (MasterPage)this.Master;
    myMaster.test = 1;
}

Det giver følgende fejl:
'System.Web.UI.MasterPage' does not contain a definition for 'Test'   

Test optræder heller ikke i min Intellisense.

Hvad er der galt?

:-)
Avatar billede snepnet Nybegynder
27. august 2006 - 15:36 #1
Du skal angive det fulde navn til din masterpage... F.eks. DitNamespace.MasterPage.
Kompileren tror at det er en System.Web.UI.MasterPage du caster til.
Det er en uhendsigtmæssighed i vs/de templates der bruges, der gør at du pr. default får en masterpage med samme klassenavn som den allerede eksisterende.
Mit bedste råd... Omdøb din masterpage til noget andet én gang for alle. Så opstår der ikke tvivl om hvad der er hvad.
Mvh
Avatar billede bongo20 Nybegynder
27. august 2006 - 15:56 #2
ok,. jeg har omdøbt min MasterPage.master til MasterMain.master.
Jeg bruger nedarvning og dermed har jeg en masterpage (MasterPageContent) der arver fra MasterPage.master. Propertien Test er sat i MasterPageContent.

Hvordan skal disse linjer så se ud?
MasterPage myMaster = (MasterPage)this.Master;
myMaster.Test = 1;
Avatar billede snepnet Nybegynder
27. august 2006 - 16:11 #3
MasterPageContent contentMaster = this.Master as MasterPageContent;
if(contentMaster != null)
{
  contentMaster.Test = 1;
}
Mvh
Avatar billede snepnet Nybegynder
27. august 2006 - 16:12 #4
Du kan dog også angive et masterpagetype directive i aspx'en... Du stikker den bare samme virtual path som der står i dit pagedirective.
Mvh
Avatar billede snepnet Nybegynder
27. august 2006 - 16:12 #5
Hvis du gør det sidste, er this.Master typestærk så du bare kan skrive sådan her:
this.Master.Test = 1;
Mvh
Avatar billede bongo20 Nybegynder
27. august 2006 - 16:18 #6
får stadig at vide at Test ikke findes
sådan ser det ud:

MasterPageContent myMaster = this.Master as MasterPageContent;
myMaster.Test = 1;

public partial class MasterPageContent : System.Web.UI.MasterPage
{
    private int pageId;

    public int PageId
    {
        set { pageId = value; }
        get { return pageId; }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        this.TopNav1.PageId = pageId;
    }
}
Avatar billede snepnet Nybegynder
27. august 2006 - 17:54 #7
Du har heller ikke en public property der hedder test på klassen, så det skal den fejle på, hvis din kode ser ud som du har vist.
Mvh
Avatar billede bongo20 Nybegynder
27. august 2006 - 18:47 #8
Ja det virker helt kanon,.. mig der havde rodet rundt i noget test.

Tak for det, smider du et svar ?
Avatar billede snepnet Nybegynder
27. august 2006 - 18:54 #9
Jeps - det kommer her :o)
Mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester