gpt4 book ai didi

javascript - 避免在 ASP.NET 中执行嵌入式代码块

转载 作者:行者123 更新时间:2023-11-30 21:18:58 25 4
gpt4 key购买 nike

在 WebForms 项目中,在特定页面上,我在 aspx 文件中有一个 javascript 方法。我在里面使用了 2 个嵌入式代码块。

<script type="text/javascript">
function showMessage(idActityGroup) {
var r = confirm("Message");
if (r == true) {
//First Code Block
<%string idActityGroup = "' + idActityGroup + '";
//Second Code Block
'<%Session["waitList"] = "yes"; %>';
//Last javascript instruction
window.location.href = '/Register';
}
</script>

问题在于,每次触发按钮的点击事件时,都会执行这两行代码。当代码隐藏按钮完成其工作时,它进入 aspx 并执行这两行。我只希望它们在函数被调用时运行。该方法位于 updatePanel 中。我试图从 updatePanel 中获取 javascript 函数,但同样的事情仍在发生。

有什么办法可以避免这种行为吗?非常感谢。

最佳答案

在解决您的问题之前,您应该清楚地了解发生了什么以及为什么每次按下按钮时都会执行这两行。您应该先查看this ASP.net 中关于页面生命周期的文档

在预渲染阶段之后,内联代码(您正在谈论的 2 行)被执行,然后生成 HTML。

当您单击一个按钮时,它会提交一个回发,并且 ASP.net 会重新呈现该页面,因此您的 2 行会第二次执行。

现在,我不认为你可以通过这种方式实现你想要的。 IE。你的第二个代码块:

<%Session["waitList"] = "yes"; %>

每次页面加载时,都会将“yes”分配给 session 状态中的“waitList”键。你应该改为尝试 generate a postback在后面的代码中处理这个问题。

<script type="text/javascript">
function showMessage(idActityGroup) {
var r = confirm("Message");
if (r == true) {
//First Code Block
__doPostBack('handleMessageConfirmed',null)
}
</script>

关于javascript - 避免在 ASP.NET 中执行嵌入式代码块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45374384/

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