Toon posts:

[ASP.NET] masterpage property - code behind contentpage

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een MasterPage gemaakt met een property (template.master):
Visual Basic .NET:
1
2
3
4
5
WriteOnly Property PageTitle() As String
    Set(ByVal value As String)
        Page.Title = "Titel | " & value
    End Set
End Property

Deze wil ik setten vanuit de code-behind van een content pagina (login.aspx.vb):
Visual Basic .NET:
1
2
3
4
5
6
7
Partial Class login_form
    Inherits System.Web.UI.Page

    Sub Page_Load(ByVal obj As Object, ByVal e As EventArgs)
        Master.PageTitle = "Inloggen"
    End Sub
End Class

Deze code-behind en template pagina roep ik zo aan in login.aspx:
Visual Basic .NET:
1
2
<%@ Page Language="VB" MasterPageFile="template.master" CodeFile="login.aspx.vb" Inherits="login_form"%>
<%@ MasterType VirtualPath="template.master" %>

Als ik in Visual Studio 2005 de site vervolgens build gaat het allemaal prima, wil ik echter de site publiceren dan krijg ik de volgende fout:
code:
1
login.aspx.vb(5,0): error BC30456: 'PageTitle' is not a member of 'System.Web.UI.MasterPage'.


Weet iemand wat hier aan de hand is? Ik heb vanalles geprobeerd, waaronder het importeren van System.Web.UI.MasterPage in login.aspx.vb maar niets helpt.

Verwijderd

Is het niet Master.Page.Title?

Verwijderd

Topicstarter
Dat werkt inderdaad wel, maar ik wil het toch via de PageTitle property laten lopen vanwege de prefix in de title.

In de code-behind kent hij overigens via de IntelliSense functie de property PageTitle wel gewoon.

  • cvs79
  • Registratie: April 2002
  • Laatst online: 14:36
Je moet in je content page een reference naar je masterpage aanmaken,

C#:
1
2
3
4
private RitMasterPage ritMasterPage = null;

this.ritMasterPage = (RitMasterPage)this.Master;
this.ritMasterPage.Title = "Vul hier titel in";

[ Voor 13% gewijzigd door cvs79 op 23-02-2006 13:06 ]


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 08-09 09:33

Not Pingu

Dumbass ex machina

Wat je ook kunt doen is de Page.Master casten naar je eigen class. Moet je die wel in een namespace declareren.

code:
1
string test = ((mynamespace.myMasterPage)this.Master).PageTitle;

[ Voor 3% gewijzigd door Not Pingu op 23-02-2006 13:22 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


Verwijderd

Topicstarter
Ok het is opgelost!

Het volgende was het geval: de property in de MasterPage stond nog niet in een code-behind maar gewoon in template.master. Ik denk dat hij de fout gaf omdat hij tijdens het publishen dus de code-behinds ging compileren, de property PageTitle ging zoeken in de class van de MasterPage maar deze niet kon vinden omdat de property niet werd gecompileerd.
Pagina: 1