在外部JavaScript文件中使用服务器端方法

时间:2011-05-13 09:33:39

标签: javascript asp.net

在c#aspx项目中。 我可以在客户端访问静态方法,在页面的开头部分导入我的命名空间,如下所示。

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

而且可以在同一个asxp页面的客户端使用它,比如。

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

我的问题是,我可以使用'&lt;%= utl.getcategoryName()。ToString()%&gt;'在外部JavaScript文件中?

有可能是这样吗?

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

并在trial.js文件中

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

提前感谢..

3 个答案:

答案 0 :(得分:1)

我不这么认为,因为外部.JS文件不会被ASP.NET处理,因此无法访问这些类型的变量。

答案 1 :(得分:0)

我认为你不能,但你可以尝试将服务器端变量作为参数传递给外部JS文件中的JS函数。

答案 2 :(得分: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的Javascript。