在此处使用C#.NET 3.5 Framework创建.aspx
网页。无论如何,该页面接受GET
变量x
,如果提供,我希望页面将JavaScript函数foo(x)
挂钩到页面的onload
事件。必须将GET
变量作为参数传递给foo
。
我对其他服务器端脚本语言比较熟悉,例如,在php中我可能会做类似下面的代码片段,我将php直接嵌入到html页面的<head>
中。 <script>
(为简单起见,我只是将foo设置为window.onload
,因为我可能只会为此事件设置一个函数):
...
<script language="javascript" type="text/javascript">
function foo(x) {
alert( x );
}
<?php
if( isset($_GET["x"]) )
echo "window.onload = foo('" . $_GET["x"] . "');";
?>
</script>
...
或者,我将.js
文件设为php解析文件,通过src
<script>
的{{1}}属性输出相同的文件并链接到html文件中(但我还是需要一点)嵌入式PHP将GET
变量传递给该脚本文件src
URL)。
无论如何,对于这个aspx
的东西,它看起来有很大的不同,因为我有一个潜在的.cs
文件,似乎有一个巨大的努力将这样的逻辑与内容分开page(.aspx)文件。我不确定如何在这种环境中获得同样的行为。
将我的JavaScript源代码作为字符串等放在我的C#源代码中并不是很理想。
无论如何,我对此进行了一些搜索,但我找不到一个干净的解决方案。任何人都可以在.aspx中找到合适的解决方案吗?
我还应该指出,我不想依赖JavaScript来解析window.location
变量的GET
,因为我使用了大量的路径重写而我想要灵活处理POST
变量。
更新
好的,所以到目前为止使用的答案更侧重于asp方面的东西,我可以尽可能接近这样的东西模仿php风格:
...
<script language="javascript" type="text/javascript">
function foo(x) {
alert( x );
}
<%
String x = this.Request["x"];
if(!String.IsNullOrEmpty(x))
Response.Write( "window.onload = foo('" + Server.UrlDecode(x) + "');" );
%>
</script>
...
虽然这有效,但这并不是我想要的答案。我希望有一个aspx.cs解决方案,它将离开在我的html文件中嵌入这种代码的需要。当我给出PHP示例时,也许我误导了。我想在世界的.cs方面处理这个,而不是直接将它嵌入到aspx文件的html中。有什么想法吗?
答案 0 :(得分:1)
我会在你自己的脚本块中定义一些全局变量,并保留主JS文件。
<script type="text/javascript">
var foo = <% = yourVar %>
</script>
答案 1 :(得分:1)
在aspx中(不在aspx.cs中):
<%
String x = this.Request["x"];
if (!String.IsNullOrEmpty(x))
{
%>
<script type="text/javascript"> window.onload = foo('<%=x%>'); </script>
<%
}
%>