2011-04-15 41 views
0

我在c#和javascript中編寫代碼,並且我通過javascript .js文件設置值時出現了一些問題,以便在後面的代碼中使用它。如何通過JavaScript傳遞.net標籤中的值

這是.js文件代碼

$(document).ready(function() { 


$('#example1').ratings(10).bind('ratingchanged', function(event, data) { 
    $('#examplerating1').text(data.rating); 
$('#lblRating').text(data.Rating); 

    }); 

這是HTML網頁代碼。

Your Rating: <span id="examplerating1">not set</span> 
      <asp:Label ID="lblRating" runat="server" Text="Label"></asp:Label> 

現在,如果我不使用runat="server",範圍值設置正確。現在爲了訪問後面的代碼中的值,我試圖把它放在一個標籤中。但該值並未在標籤中設定。我如何在通過HTML頁面後的代碼中使用data.rating值?

謝謝

回答

1

ASP.Net控件ID根據NamingContainer進行更改。

更改了jQuery如下:

$(document).ready(function() { 
    $('#example1').ratings(10).bind('ratingchanged', function(event, data) { 
    $('#examplerating1').text(data.rating); 
    //Notice the change in the selector here. 
    $('[id$="_lblRating"').text(data.Rating); 

    }); 
+0

是的我正在使用母版頁,我改變了代碼'$('[id $ =「ctl00_ContentPlaceHolder1_lblRating'').text(data.Rating);'但問題沒有解決......標籤仍然是空的 – Salvatore 2011-04-15 21:09:53

+0

你可以發佈爲標籤生成的HTML嗎? – Chandu 2011-04-15 21:27:20

+0

'' – Salvatore 2011-04-15 21:30:19

0

檢查你的代碼的其餘部分。如果在另一個.NET控件(例如母版頁)中有標籤,.NET生成的跨度ID與您在.aspx文件中分配的ID不同。例如,如果它位於名爲ContentPlaceHolder1的Content控件內部,則該ID將爲ctl00_ContentPlaceHolder1_lblRating。正如Cyber​​nate上面所說的,生成的ID取決於標籤所屬的NamingContainer。

+0

是的,我正在使用母版頁,我更改了代碼'$('[id $ =「ctl00_ContentPlaceHolder1_lblRating'').text(data.Rating);'但問題沒有解決......標籤仍爲空 – Salvatore 2011-04-15 21:10:55

+0

您必須確保它是ASP.NET生成的實際名稱。如果您的內容標記命名不同,或者除了母版頁之外還有更多容器控件,則ID將會不同。在文件上查看源代碼,然後搜索lblRating或在aspx文件中分配任何控件ID。如果Javascript是在aspx文件中而不是在單獨的.js文件中發出的,那麼您也可以在javascript(我認爲!)內使用'<%= lblRating.ClientID%>'。每個控件都有一個.ClientID屬性,它將是ASP.NET將要在HTML中分配的ID。 – 2011-04-16 00:02:27