2010-12-14 7 views

Antwort

0

Sagen wir, Sie haben ein div, das Sie in Code hinter und in jQuery verwenden möchten.

Wie wir beide wissen, wenn Sie den Quellcode der Seite anzeigen, wird die ID von asp.net geändert. Also zugreifen es jQuery dies mit tun:

$("#<%=myDiv.ClientID %>") 
+1

Sollte eine Notiz hinzugefügt werden, dass dies nicht funktioniert, wenn JavaScript extern ist (was in 90% der Fälle der Fall ist). Deshalb habe ich wörtlich vorgeschlagen. – RPM1984

+1

document.getElementById ('$ ("# <% = MiddleReg.ClientID%>")') .setAttribute ('style', 'display: none'); - Wird nicht funktionieren – Kovu

+0

Ich denke nicht, dass dies eine gute Lösung ist. Warum möchten Sie Ihren JavaScript-Code so eng an Ihren Server-Code binden? Sie sollten so getrennt wie möglich sein, vorzugsweise sollten die Skripts in einer separaten Datei definiert werden, die Sie einschließen. –

0

Sie müssen machen Sie es runat = Server, wenn Sie von dem Code dahinter zugreifen möchten - einfach so.

Wenn es in JavaScript "viel verwendet" ist - legen Sie die ClientId in einem Literal-Steuerelement, und greifen Sie auf diese Weise von JavaScript.

Oder wenn Sie auf .NET 4, setzen Sie den ClientIdMode = "Static".

EDIT

Hier ist, wie Sie eine wörtliche Steuerung verwenden können, auf den Client-ID zu halten (so können Sie es in JavaScript verwenden):

ASPX:

<asp:Literal id="DivClientId" runat="server"/> 

ASPX. CS:

DivClentId.Text = string.Format("<script type=\"text/javascript\">var divId = {0};</script>", ServerSideDiv.ClientId); 

JavaScript:

var div = document.getElementById(divId); 
+0

Ich verstehe nicht, was ist die ClientID in einem wörtlichen Steuerelement? – Kovu

+0

@Kovu - siehe meine Bearbeitung. – RPM1984

3

ich tun würde, als RPM1984 vorschlagen und ClientIdMode="Static" verwenden, wenn Sie verwenden .Net 4.0, wie er sagt. Aber wenn das nicht möglich ist wickeln Sie einfach Ihre div in einem div, die nicht runat="server" wie hat:

<div id="wrapperDiv"> 
    <div id="innerDiv" runat="server">additional stuff</div> 
</div> 

, die funktionieren sollte, und es wäre ziemlich gerade vorwärts die innere div zuzugreifen unter Verwendung der ID des äußeren div in jQuery :

$(document).ready(function() { 
    $('#wrapperDiv > div').css('display', 'none'); 
}); 
+0

+1 - das ist eine großartige Idee, nie daran gedacht! – RPM1984

+0

Ich denke, es ist ein wenig wortreich in dem Sinne, Sie sollten es nicht so tun müssen, aber was zu tun ist, wenn Sie mit Legacy asp.net Webforms Anwendungen arbeiten:) ... –

+0

Niemals daran gedacht. +1 –

0

In .net 4.0 nur ein Panel-Steuerelement verwenden (die als div gerendert wird) und die ClientIDMode zu statisch eingestellt. So können Sie Ihre Stile auf der Serverseite festlegen und trotzdem einfach in Ihrem JS-Code darauf zugreifen.

Verwandte Themen