gpt4 book ai didi

c# - 将 GET 变量挂接到 onload JavaScript 事件中

转载 作者:行者123 更新时间:2023-12-02 19:48:26 24 4
gpt4 key购买 nike

这里使用 C# .NET 3.5 Framework 来制作 .aspx网页。无论如何,该页面接受 GET变量x ,如果提供的话,我希望页面 Hook JavaScript 函数 foo(x)onload页面的事件。 GET变量必须作为参数传递给 foo .

我更熟悉其他服务器端脚本语言,例如,在 php 中,我可能会执行类似以下代码片段的操作,其中我将 php 直接嵌入到 <head><script> 中的 html 页面的(为简单起见,我只是将 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 从 html 文件链接该文件<script> 的属性(但我仍然需要一些嵌入式 PHP 将 GET 变量传递到该脚本文件 src URL)。

无论如何,有了这个aspx东西,它看起来有很大不同,因为我有一个底层 .cs文件,并且似乎付出了巨大的努力将这样的逻辑与页面(.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 中。有什么想法吗?

最佳答案

我会在您自己的脚本 block 中定义一些全局变量,并保留主 JS 文件。

<script type="text/javascript">
var foo = <% = yourVar %>
</script>

关于c# - 将 GET 变量挂接到 onload JavaScript 事件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9603246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com