asp.net - net轉mvc - visual studio 2017 mvc教學




什麼是使用jQuery找到ASP.Net控件的最佳方法? (3)

在使用jQuery實現我的第一個重要腳本時,我需要在頁面上找到一個特定的Web控件。 由於我使用DotNetNuke,不能保證控件的ClientID,因為容器控件可能會從一個站點到另一個站點。 我結束了使用一個屬性選擇器,查找以控件的服務器ID結尾的ID。

$("select[id$='cboPanes']")

這似乎可能不是最好的方法。 有沒有另外一種方法來做到這一點?

@Roosteronacid - 當我得到我想要的控件時,我試圖按照給定的技術/語言的習語。 當我用C#編程時,我試圖用最好的方式來利用C#特性。 由於這是我第一次真正使用jQuery,因為這將被成千上萬的用戶使用,我想確保我正在創建代碼,這也是其他人的一個很好的例子。

@toohool - 這肯定會工作,但不幸的是我需要保持在單獨的文件的JavaScript性能的原因。 因為每個“頁面”是動態生成的,所以如果您內嵌JavaScript,則無法真正充分利用緩存。 我最終會一次又一次地向客戶端發送相同的JavaScript,因為頁面上的其他內容改變了。

@Roosteronacid - 當我得到我想要的控件時,我試圖按照給定的技術/語言的習語。 當我用C#編程時,我試圖用最好的方式來利用C#特性。 由於這是我第一次真正使用jQuery,因為這將被成千上萬的用戶使用,我想確保我正在創建代碼,這也是其他人的一個很好的例子。

@toohool - 這肯定會工作,但不幸的是我需要保持在單獨的文件的JavaScript性能的原因。 因為每個“頁面”是動態生成的,所以如果您內嵌JavaScript,則無法真正充分利用緩存。 我最終會一次又一次地向客戶端發送相同的JavaScript,因為頁面上的其他內容改變了。


在控件上使用標記類,並通過jQuery選擇。


除了更貴一點,性能方面,我不能看到使用該選擇器的任何錯誤。 畢竟; 你正在得到你想要訪問的控件。


有一件事我以前做過(在JavaScript中不是jQuery),在上面我的JavaScript導入中,輸出的動態控件ID類似於它所推薦的,並將它們分配給我在腳本導入中引用的變量。

像這樣的東西,應該允許你利用緩存,並仍然使你有確切的客戶端ID:

<head>
    <script type="text/javascript>
        var cboPanesID = <%= cboPanes.ClientID %>;
    </script>

    <!-- this JS import references cboPanesID variable declared above -->
    <script src="jquery.plugin.js"></script>
</head>




controls