2011-06-13 48 views
1

我想從JavaScript文件中獲取ASP.NET控件的值。當JavaScript在aspx頁面上時,我知道如何做到這一點,但當它位於js文件中時,不知道如何做到這一點。示例:可能從JavaScript文件中獲取ASP.NET控件值?

<head> 
    <script type="text/javascript"> 
     alert('<%= lbl_test.Text %>'); //alerts the text of the ASP.NET label 
    </script> 

    <script type="text/javascript" src="Scripts/test.js" /> //alerts "<%= lbl_test.Text" %> 
</head> 

在此示例中,test.js中只有alert('<%= lbl_test.Text %>');

有沒有反正我重現在js文件中的第一個JavaScript的行爲?

+0

這個工作適合你嗎? http://vikramdoda.wordpress.com/2011/04/01/how-to-asp-net-control-clientid-in-external-javascript-file/ – Akhil 2011-06-13 21:16:11

回答

0

作爲進一步的建議,以什麼@Adam提供,你可以考慮使用#include directive。使用這種方法,你可以應該通過一個#include參考能來包裝你的.js的代碼文件中適當<script>標籤內和「注入」吧:

<head> 
    <!--#include file="myScript.js"--> 
</head> 

我沒有測試這一點,它只是另一種可能性。我沒有也不一定會主張定期使用#includes,並且在大多數情況下會避免使用它們;但是如果你的選擇很渺茫,它可能會奏效。

我認爲你最好的選擇是修改腳本的第一個建議,即接受從母語執行此操作所需的任何參數,避免內聯ASP.NET腳本和Javascript的混合。

0

ASP.NET輸出到Web瀏覽器的頁面必須是標準的HTML/Javascript/CSS。 Javascript運行在Web瀏覽器的客戶端。所以可以對Javascript做任何事情,通常可以在客戶端上進行。

標籤將作爲範圍輸出。所以你可以這樣做:

function getLabelValue(lbl) { 
    if (lbl.childNodes.length == 0) 
     return null; 

    var textValue = ""; 
    for (var i = 0; i < lbl.childNodes.length; i++) 
    { 
     if (lbl.childNodes[0].nodeType == Node.TEXT_NODE) 
      textValue += lbl.childNodes[0].nodeValue; 
    } 

    return textValue; 
} 

var lbl = document.getElementById("lbl_test"); 
var value = getLabelValue(lbl); 
alert(value); 
相關問題