javascript
  • asp.net
  • 2011-05-13 41 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

    相关问题