2010-03-02 13 views
8

Weiß jemand, ob es möglich ist, die Macht von JQuery auf der .Net-Server-Seite zu nutzen?jQuery Server-Seite DOM-Manipulation

Zum Beispiel habe ich einige HTML als Zeichenfolge in einem Code hinter. Gibt es eine Möglichkeit, JQuery darauf auszuführen?

ich zur Zeit das tue ...

Angenommen dies der String ist ...

<input id='AddressSettings_txtFirstName' name='txtFirstName' 
value='#firstNameValue#' size='25' type='text' class='val_required'/> 

Mein C# tut dies

strHTML = strHTML.Replace("#firstNameValue#", customerInfo.FirstName); 

Und das ist, wie ich meine binden Daten zu meinem HTML.

Nun, was ich tun möchte, ist, anstatt die # firstNameValue # als Platzhalter hinzufügen und ersetzen Ich möchte irgendwie eine Zeile von JQuery auf die HTML-Zeichenfolge in meinem C# -Code ausführen.

strHTML = strHTML.ExecuteJQuery("$('#AddressSettings_txtFirstName').text('" 
     + customerInfo.FirstName + "')"); 

Was sind meine Optionen hier?

+0

Ich bin an der Frage interessiert, obwohl ich vermute, dass die Antwort "nein" sein wird. (Da js ist, soweit ich weiß, Client-Seite nur ...) –

+0

Ich bin Theorie jemand könnte ein Firefox-Build in einem. Net-Objekt zu wickeln. Es würde nicht einmal die volle Funktionalität benötigen. Einfach die Möglichkeit, eine HTML-Seite zu laden, Javascript auf dieser Seite auszuführen und dann die Seite zurückzugeben. Sicher muss jemand das irgendwo getan haben? – ctrlShiftBryan

+0

Es macht keinen Sinn, dies zu tun. Sie können nicht garantieren, dass Firefox auf der anderen Seite ist, so dass Sie es in einem DOM-Modell für einen bestimmten Browser rendern ist etwas nutzlos. Außerdem denkst du daran * komplett * falsch. Sie haben Zugriff auf den vollständigen zurückgegebenen HTML-Code und können jeden einzelnen Aspekt bearbeiten, bevor dieser den Browser erreicht. Die Technologie-Sets, um dies auf dem Server-Ende zu tun, sind radikal verschieden. Sie müssen nur den HTML-Code einfügen, den Sie mit den Daten haben möchten, die Sie haben. Es ist * das * einfach. – casperOne

Antwort

4

Für alle Absichten und Zwecke ist die Antwort "Nein" (während es vielleicht eine obskure Art der Handhabung dieses gibt, ist es nicht der optimale Weg).

Es scheint, dass Sie nach einer Möglichkeit suchen, den HTML-Code zu bearbeiten, der auf der Serverseite erzeugt wird, was ein sehr legitimer Wunsch ist, es ist nur der Ansatz auf der Serverseite mit .NET (oder anderem) Technologien unterscheidet sich grundlegend von der Art, wie Sie sie auf der Clientseite angehen würden.

Da der Inhalt bereits auf dem Client gerendert wurde, ist die Art und Weise, wie Sie diese ändern möchten, anders. Auf dem Server besteht die Seite aus verschiedenen Teilen, die den HTML-Code schließlich dem Client rendern. Dabei werden Daten verwendet, auf die der Client nicht unbedingt zugreifen muss (ebenso wie Ressourcen und Bibliotheken).

Aus diesem Grund möchten Sie verwenden, was auf dem Server verfügbar ist, um das zu erreichen, was Sie tun.

Unabhängig davon, ob Sie das WebForms- oder das MVC-Modell von ASP.NET verwenden, gibt es Mechanismen, mit denen Sie Daten binden können, ohne das Tag selbst ausschreiben zu müssen.

Zum Beispiel haben Sie im WebForm-Modell die TextBox class, die Sie die Text property einschalten können.

In ASP.NET MVC gibt es die TextBox extension method auf der InputExtensions class, die Sie den Inhalt des Textfelds übergeben können und die Methode wird das Tag für Sie rendern.

0

Das DOM ist eine browserspezifische Einheit. Also nicht direkt verfügbar wie du suchst. Sie können jedoch genau bestimmen, was Sie manipulieren möchten, und entweder .live() verwenden oder Ihren jQuery-Code aufrufen, um Verhaltensweisen hinzuzufügen, wenn Elemente hinzugefügt werden. Zur Änderung:

<input id='AddressSettings_txtFirstName' name='txtFirstName' 
value='#firstNameValue#' size='25' type='text' class='val_required'/> 

$('#AddressSettings_txtFirstName').change(function(){ 
// do stuff here 
}); 

wird ausgelöst, wenn es zum Beispiel ändert. EDIT: Eine andere Möglichkeit ist, dass der Client die Daten mit Ajax und JSON zieht - aber das ist eine kleine Veränderung in Ihrer Arbeitsweise.

0

Nun, das ist die Antwort für Java. Here und Here Zur Verfügung gestellt von einem Mann namens John Resig. (Nicht sicher, er weiß, was er spricht, wenn es um JQuery kommt ... Wink zwinker)

Nun, was ist mit .Net?

-1

Diese Technologie, ItsNat, ist Ihren Wünschen sehr ähnlich, die schlechten Nachrichten ... ist Java basiert.

1

Verwenden Sie jQuery mit jsdom für Node.js. Einfachste Möglichkeit, DOM-Elemente mit Javascript auf der Serverseite zu manipulieren.