繁体   English   中英

为什么 razor 在编译时在按钮单击方法内执行 C# 方法而不单击按钮?

[英]Why razor executes a C# method inside a button click method on compilation without clicking the button?

-ASP.NET 4.7 Web 应用程序-

我在 session 中保存了一些通知以向用户展示。 我想在单击按钮时删除 session 变量。

这个想法是为了确保用户得到通知,只要用户不点击“知道”按钮,我就不会从 session 中删除通知,这样每次用户重新加载页面时,他们都会看到相同的通知 window。

我在模态中有一个按钮,如下所示:

<button type="button" class="btn btn-secondary" onclick="clearSession()" data-dismiss="modal">Got it</button>

这是应该在按钮单击时调用的方法:

<script type="text/javascript">
    function clearSession() {
        @{Session.Remove("WhatsNewList");}
    };
</script>

问题是即使未单击按钮,代码的以下部分也会预编译并执行。

@{Session.Remove("Notifications");}

我想知道这是什么原因,有没有办法防止这种情况发生。

我知道我可以使用 Ajax 或 jQuery 调用 C# 方法,但我想知道是否有办法我也可以这样做。

提前致谢!

围绕表达式使用@{ } 将导致表达式在页面加载到浏览器之前在服务器端进行评估,这意味着代码将在页面被请求时立即执行。 所以,简短的回答是,你不能用这种方法做你想做的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM