2012-04-03 6 views
0

Ich brauche ein div in der Master-Seite aus einem webusercontrol.ascx
ich es mit versucht zu finden:Wie findet man Div in Master von Ascx?

Htmlgenericcontrol myDiv = (Htmlgenericcontrol) Page.Master.FindControl ("dvAlert");

Aber das funktioniert nicht.

Antwort

4

Lassen Sie Ihr div auf dem Server laufen.

Erstellen Sie eine öffentliche schreibgeschützte Eigenschaft YourProperty, die dieses Steuerelement auf der Masterpage verfügbar macht.

Acces das Steuerformular ascx wie folgt aus:

Page.Master.YourProperty 

EDIT: Es sieht aus wie, dass die OP will es Client-Seite mit jQuery finden. Also, er hat viele Möglichkeiten.

Nach seinem Kommentar kann er die Skriptform Server Seite injizieren. Also braucht er einen zuverlässigen Selektor. Er hat mehrere Optionen, um es zu bekommen:

1) Machen Sie nicht die Kontrolle runat = "server" und geben Sie eine feste ID, die er weiß, wird nicht auf der Seite <div id="FixedUniqueId"... wiederholt werden. Verwenden Sie diese Auswahl: $('#FixedUniqueId')

2) Führen Sie die Steuerung auf dem Server aus, und verwenden Sie die ClientId. Konstruieren Sie die jQuery-Selektor wie diese "$('#" + Page.Master.YourProperty.ClientId +"')"

3) Nutzen Sie das Know Teil der id (das Ende der id) und finden es jquery $("element[id$='dvAlert']")

mit Aber wie OP wirklich will, eine Warnung zeigen, es ist viel besser Erstellen Sie eine clientseitige JavaScript-Funktion auf der Masterpage selbst, die den Inhalt des div aktualisiert, indem Sie die Option 1) für die ID verwenden. Dann stattdessen ein Skripts der Injektion in dem das Skript benötigt wird, kann das injizierte Skript zu dieser Funktion auf einen Anruf reduziert werden:

function showAlert(message) { 
    $('#FixedUniqueId').text(message); 
    } 

Dann kann das injizierte Skript so einfach wie ein Aufruf showAlert("message"). Auf diese Weise kann er jederzeit das Skript und den Seitenaufbau ändern (die Art, wie der Alarm angezeigt wird) und die Funktion auf der MasterPage ändern, ohne die UC-Funktionalität zu beeinträchtigen.

+0

+1 - werde ich selbst verwenden. – SkonJeet

+0

Danke, aber ich habe mit Jquery herausgefunden Page.ClientScript.RegisterStartupScript (GetType(), "Laden", ""); – wsoza

+0

Bitte schauen Sie sich die editierte Antwort an. – JotaBe