有没有一种方法可以在外部的.js文件中处理.NET/C#变量?

3

我有一个变量在aspx.cs中,例如:

protected string myVar="Hello";

现在,如果我转到我的scripts.js文件中添加以下内容:
<head>
    <script src="/scripts/scripts.js" type="text/javascript"></script>
</head>

我尝试了以下代码:

var myVarJs="<%=myVar&>";

我的问题是,我无法获取.NET myVar的值。

有没有什么方法可以解决这个问题,或者说这只是我的幻想?


我认为你可以将脚本标记为.aspx,然后就应该可以了。 - bevacqua
有一些方法可以让ASP.Net动态处理.js文件,但是在.js文件内部进行这种操作是不好的,因为它可能会破坏客户端缓存。Ivan发布的答案是一个更好的解决方案。 - Justin
我想知道将一个数组传递给JavaScript数组的最佳方法是什么,也许是二维字符串数组。 - Rosmarine Popcorn
3个回答

7

在脚本之前插入变量:

<head>
    <script type="text/javascript"> var myVarJs="<%=myVar%>"; </script>
    <script src="/scripts/scripts.js" type="text/javascript"></script>
</head>

2

我认为在JavaScript代码中直接访问C#变量是不可能的,因为C#是客户端语言,而JavaScript是服务器端语言。

除非在Asp.net页面上将变量保存在隐藏字段或标签中作为不可见的文本。

Asp:

<asp:HiddenField ID="hidden" runat="server" value="<%=strvariable %>" />

Javascript:

function Button_Click()
{
    alert(document.getElementById('hidden').value); 
}

这将获取ID为“hidden”的隐藏字段。

我认为这可能有效。


2

您还可以注册/渲染客户端脚本。这样,您就可以在后端声明变量,然后渲染JavaScript变量。


请查看此ClientScriptManager http://msdn.microsoft.com/zh-cn/library/system.web.ui.clientscriptmanager%28v=vs.80%29.aspx - Base33

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接