[Asp.net 4.0 c#] Accedere al contenuto presente su una MasterPage da ...

lunedì 18 aprile 2011 - 12.42

maxcondor Profilo | Newbie

Salve, ho una pagina master con un semplice menù di navigazione
codice:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


dalla content page vorrei modificare la lista con id btn_1 aggiungendo una classe css. è un' operazione fattibile?
Non riesco!!!

martinez Profilo | Senior Member

Prova a vedere se riesci a trovare la tua soluzione qui :)

http://www.dotnethell.it/forum/messages.aspx?ThreadID=33773

Ciao

maxcondor Profilo | Newbie

Nel tuo link si parla di controlli e di VirtualPath che se non erro non è disponibile in asp.net 4.0

martinez Profilo | Senior Member

>Nel tuo link si parla di controlli e di VirtualPath che se non
>erro non è disponibile in asp.net 4.0

Se non erro ... ed a me non risulta che VirtualPath non sia disponibile in .net 4 funziona benissimo quel sistema ... se invece dici che non è più accettato o deprecato mi passi il link dove posso informarmi della cosa ???

qualsiasi controllo HTML con l'aggiunta (come anche nel tuo caso) del runat="server" è gestibile con quel sistema dell'esempio citato :)

Dove trovi difficoltà o cosa non riesci a fare?

Ciao

alexmed Profilo | Guru

Ciao

@martinez
Direttiva per direttiva non conviene utilizzare quella per la MasterPage? (<%@ MasterType VirtualPath="~/MasterPage.master" %>)

alexmed

martinez Profilo | Senior Member

>Ciao
Ciao!

>
>@martinez
>Direttiva per direttiva non conviene utilizzare quella per la
>MasterPage? (<%@ MasterType VirtualPath="~/MasterPage.master"
>%>)
>
>alexmed

Certo in questo esempio mi sembrerebbe più calzante ... ma quello che avevo esposto ... era generico ed utilizzabile ovunque ...

Io renderi pubblica la voce del menù attraverso il codice e l'andrei a modificare di volta in volta dalle varie pagine content all'occorrenza ... Non mi sovviene al momento un idea migliore

public HtmlGenericControl myTag { get { return valoreTag; } set { valoreTag = value; } }

e poi all'occorrenza lo richiamerei dalla mia pagina content....

this.Master.myTag. ... // quello che voglio che faccia

La pensi anche tu così ????

Ciao

alexmed Profilo | Guru

Si oppure potrebbe anche crearsi una sub ad hoc:
Te la scrivo in VB ma si capisce.

Premesso che deve aggiungere runat="server" ai tag, nella masterPage si crea una Public Sub AddAttributeTag()

Public Sub AddAttributeTag()
myTag.Attributes.Add("class", "pippo")
End Sub

Poi dalla pagina richiama la Sub

Master.AddAttributeTag()

Io ad esempio questa la utilizzo se devo aggiungere delle funzioni javascript al load del body in presenza di masterpage.

alexmed

maxcondor Profilo | Newbie

Scusate ragazzi ma sono alle prime armi.
la mia pagina dei contenuti ha questa intestazione
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
il virtualpath l'inlisense di VisualStudio non me lo propone proprio

alexmed Profilo | Guru

Devi aggiungere anche il riferimento alla MasterPage

http://msdn.microsoft.com/it-it/library/ms228274.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPageMiaPagina.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ MasterType VirtualPath="~/MasterPageMiaPagina.master"" %>


alexmed

maxcondor Profilo | Newbie

Public Sub AddAttributeTag() myTag.Attributes.Add("class", "pippo") End Sub
non mi picchiate ma in c#?

alexmed Profilo | Guru

http://www.developerfusion.com/tools/convert/vb-to-csharp/

Prova ...
alexmed

maxcondor Profilo | Newbie

FUNZIONAAAA!!!
volevo chiedervi un'ultima cosa:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
dovrò andare a creare tutta questa serie di funzioni ?
public void AddAttributeTag() { ancor_1.Attributes.Add("class", "current"); } public void AddAttributeTag2() { ancor_2.Attributes.Add("class", "current"); } public void AddAttributeTag3() { ancor_3.Attributes.Add("class", "current"); } .... .... ....
si può ottimizzare?
grazie ancora siete stati molto pazienti

martinez Profilo | Senior Member

>FUNZIONAAAA!!!

non c'erano dubbi :)

>dovrò andare a creare tutta questa serie di funzioni ?
>si può ottimizzare?

tocca capire cosa devi fare ... se il semplice cambio di css sulla pagina corrente (content) al load ... purtroppo dovrai inserire una funzione su ogni pagina ...
altrimenti tocca capire bene cosa devi fare per valutarne l'ottimizzazione ...

>grazie ancora siete stati molto pazienti
>
di nulla :)

maxcondor Profilo | Newbie

si devo cambiare il css della pagina corrente
scriverò le brave "funzioncine"

alexmed Profilo | Guru

Puoi ridurla così:

Public Sub AddAttributeTag(ByVal tag As HtmlAnchor)
tag.Attributes.Add("class", "...")
End Sub

Poi dalla tua pagina la richiami

Master.AddAttributeTag(Master.FindControl("qui metti l'ID del controllo Ancor al quale applicare la classe"))

Ciao

alexmed
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5