为什么 razor 在不单击按钮的情况下在编译时在按钮单击方法中执行 C# 方法?
Why razor executes a C# method inside a button click method on compilation without clicking the button?
-ASP.NET 4.7 网络应用-
我在会话中保留一些通知以显示给用户。我想在单击按钮时删除会话变量。
我的想法是确保用户收到通知,只要用户不点击“知道”按钮,我就不会从会话中删除通知,这样每个当用户重新加载页面时,他们将看到相同的通知 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# 方法,但我想知道我是否也可以这样做。
提前致谢!
环绕表达式 使用@{ } 将导致在页面加载到浏览器之前在服务器端计算表达式,这意味着代码将在页面被请求时立即执行。所以,简短的回答是,你不能用这种方法做你想做的事。
-ASP.NET 4.7 网络应用-
我在会话中保留一些通知以显示给用户。我想在单击按钮时删除会话变量。
我的想法是确保用户收到通知,只要用户不点击“知道”按钮,我就不会从会话中删除通知,这样每个当用户重新加载页面时,他们将看到相同的通知 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# 方法,但我想知道我是否也可以这样做。
提前致谢!
环绕表达式 使用@{ } 将导致在页面加载到浏览器之前在服务器端计算表达式,这意味着代码将在页面被请求时立即执行。所以,简短的回答是,你不能用这种方法做你想做的事。