【发布时间】:2020-01-04 18:26:59
【问题描述】:
我正在尝试在输入的onfocusout 事件上设置一个会话变量,即刚刚输入该输入的内容。
我已经尝试过直接的 javascript 即。
var e = document.getElementById("Supervisor");
sessionStorage.setItem('_Supervisor', e);
虽然回发后不会保留该值。
<input value="@HttpContext.Session.GetString("_Supervisor")" id="Supervisor"
class="form-control" onfocusout="UpdateSuper()" />
<script language="javascript">
function UpdateSuper()
{
@{HttpContext.Session.SetString("_Supervisor", getElementById('Supervisor').value);};
}
</script>
我可能会因为尝试组合两种不同的方法而感到困惑,但我正在寻找一种快速有效的方法来设置此值而无需回发。
【问题讨论】:
-
那是网络矩阵吗?我不太熟悉,但你有没有看过
Page Methods? (ASP.NET AJAX 的一部分。过时但适用于使用来自 javascript 的代码。) -
JavaScript sessionStorage 是客户端,HttpContext.Session 是服务器端。他们不碰
-
你不能在一些 JavaScript 事件处理程序中运行这样的服务器端代码。除非您主动向服务器发送新请求(例如使用 AJAX),否则您通常无法与服务器端交互。 – 服务器将只呈现 HTML,然后您有一个固定的源被发送到客户端,并在那里执行。只需在您的浏览器中查看源代码,看看最后是什么 (
CTRL+U)。
标签: javascript c# session asp.net-core