Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从JavaScript访问ASP.NET会话变量_C#_Javascript_Asp.net_Session - Fatal编程技术网

C# 从JavaScript访问ASP.NET会话变量

C# 从JavaScript访问ASP.NET会话变量,c#,javascript,asp.net,session,C#,Javascript,Asp.net,Session,当代码var accNo=''时将被执行?。我在Page\u LoadComplete事件中更改会话变量,但当我使用var accNo=''访问它时,它总是返回我首先设置的值。在Page\u LoadComplete中,我喜欢以下内容会话[“hdnacession”]=GetNewAccession(),调试时,我看到会话[“hdnacession”]每次都会更新。但是为什么不在JavaScript中更新呢?。我无法使用HiddenField代替Seession 您需要创建回发以从JS访问会话变

当代码
var accNo=''时将被执行?。我在
Page\u LoadComplete
事件中更改会话变量,但当我使用
var accNo=''访问它时,它总是返回我首先设置的值。在
Page\u LoadComplete
中,我喜欢以下内容<代码>会话[“hdnacession”]=GetNewAccession()
,调试时,我看到
会话[“hdnacession”]
每次都会更新。但是为什么不在JavaScript中更新呢?。我无法使用
HiddenField
代替
Seession

您需要创建回发以从JS访问会话变量。像这样:

<script type="text/javascript">
<!--
function setSessionVariable(valueToSetTo)
{
 __doPostBack('SetSessionVariable', valueToSetTo);
}
// -->
</script>

private void Page_Load(object sender, System.EventArgs e)
{
 // Insure that the __doPostBack() JavaScript method is created...
 this.GetPostBackEventReference(this, string.Empty);

 if ( this.IsPostBack )
 {
  string eventTarget = (this.Request["__EVENTTARGET"] == null) ? string.Empty : this.Request["__EVENTTARGET"];
  string eventArgument = (this.Request["__EVENTARGUMENT"] == null) ? string.Empty : this.Request["__EVENTARGUMENT"];

  if ( eventTarget == "SetSessionVariable" )
  {
   Session["someSessionKey"] = eventArgument;
  }
 }
}

私有无效页面加载(对象发送方,System.EventArgs e)
{
//确保创建了_udopostback()JavaScript方法。。。
this.GetPostBackEventReference(this,string.Empty);
如果(this.IsPostBack)
{
string eventTarget=(this.Request[“\u eventTarget”]==null)?string.Empty:this.Request[“\u eventTarget”];
string eventArgument=(this.Request[“\u eventArgument”]==null)?string.Empty:this.Request[“\u eventArgument”];
如果(eventTarget==“SetSessionVariable”)
{
会话[“someSessionKey”]=eventArgument;
}
}
}

请参见此处:

您必须使用一些服务器端控件来执行此操作(例如HiddenField或隐藏span with runat=“server”)


将仅在您第一次进入页面时进行计算,而不是在回发过程中进行计算。

您的代码块在呈现页面时将获取其值,因此,在
page\u Load
page\u LoadCompleted
中设置的任何值都应在客户端中正确显示

如果不是,则一定存在另一个问题-尝试通过向页面添加临时属性来测试此问题,在
page\u Load
中初始化它并将其写入客户端(即,
var test=“”;


如果问题只是在执行回发后才出现(您的问题不是很清楚),那么您可能最终必须使用隐藏字段。可能还有其他方法来处理这个问题,但我看不到有一种情况是您能够实现它们,而不能添加隐藏字段。

您想实现什么?