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.

  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Is het niet Master.Page.Title?

Skill is when luck becomes a habit.


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: 23:06
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: 01-04 20:36

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