javascript
  • asp.net
  • 2011-05-13 47 views 1 likes 
    1

    在c#aspx項目中。 我可以通過在頁面的開始部分導入我的名稱空間來實現客戶端的靜態方法,如下所示。在外部JavaScript文件中使用服務器端方法

    <%@ Import Namespace="utl=portal.library.Utilities" %> 
    

    而且可以在同一個asxp頁面的客戶端使用。

    <script type="text/javascript"> 
    var categoryPage; 
    categoryPage = '<%= utl.getcategoryName().ToString() %>'; 
    </script> 
    

    我的問題是,我可以使用 '<%= utl.getcategoryName()。的ToString()%>' 在外部的JavaScript文件?

    可能是這樣的嗎?

    <%@ Import Namespace="utl=portal.library.Utilities" %> 
    <script src="/scripts/trial.js" type="text/javascript"></script> 
    

    ,並在trial.js文件提前

    var categoryPage; 
    categoryPage = '<%= utl.getcategoryName().ToString() %>'; 
    

    感謝..

    回答

    1

    我不這麼認爲,因爲外部.js文件不會被ASP處理.NET,因此無法訪問這些類型的變量。

    +0

    取決於IIS版本,這不一定是正確的。從版本7開始,您可以在集成模式下運行網站,這意味着所有請求都可以通過asp.net,.js,extensionless等進行處理,因此您可以輕鬆編寫一個通用的asp.net處理程序並將其配置爲響應到scripts/trial.js – 2012-01-15 23:01:12

    0

    我不認爲你可以,但你可以嘗試將服務器端變量作爲參數傳遞給外部JS文件中的JS函數。

    0

    您可以創建一個僅輸出Javascript而不是HTML的.aspx文件。只要您在後面的代碼中將內容類型設置爲application/x-javascript,它就可以工作。

    例如,創建Test.js.aspx。然後,在後面的代碼爲Test.js.aspx.cs:

    protected void Page_Load(object sender, EventArgs e) 
    { 
        Response.ContentType = "application/x-javascript"; 
    } 
    
    protected string GetMessage() 
    { 
        return "Hello, World!"; 
    } 
    

    在Test.js.aspx文件:

    window.onload = function() { 
        var msg = <%=GetMessage() %> 
        alert(msg); 
    } 
    

    現在,這是事實,在客戶端上運行的JavaScript無法調用服務器上運行的C#函數。你需要AJAX。但是你當然可以使用這種模式來生成在生成ASP.NET時使用ASP.NET的Javascript。

    +0

    你不需要它是一個.aspx文件。只需編寫一個通用的asp.net處理程序,並在web.config中對其進行配置以響應scripts/trial.js – 2012-01-15 23:02:36

    相關問題