html页面上的按钮使用window.open()
命令重定向到aspx页面。
html页面上有一些数据,我希望在执行page_load
之前在aspx页面的服务器端。
以下是我在html页面上重定向到aspx页面的代码
var win = window.open('mypage.aspx','_self');
win.args=this.Args;
以下是我在aspx页面上的代码,它试图捕获从html页面传递的数据
<script type='text/javascript'>
var readyStateCheckInterval = setInterval(function () {
if (document.readyState === "loading") {
$('#hdnArgs').val(window.args);
clearInterval(readyStateCheckInterval);
}
}, 100);
</script>
<input type='hidden' id='hdnArgs' runat='server'/>
以下是aspx.cs文件中的代码,该文件试图读取隐藏变量的值,该值是根据html页面的数据设置的
protected void Page_Load(object sender, eventargs e)
{
string data = hdnArgs.value; //this is always null
}
但我得到的总是&#39; null&#39;。
readyStateCheckInterval
事件完成后page_load
设置隐藏变量值。
我想在page_load
之前隐藏变量的值。
我怎么能得到它?
答案 0 :(得分:1)
在页面生命周期结束之前无法设置任何控件的值。
让我解释一下..
您尝试在hdnArgs
上设置值,但在页面生命周期控制中仅生成并仅在完成Page_init,Page_Load,Page_Load_Complete
后将其发送到浏览器
所有这些方法..
所以,当您尝试使用args
Page_load事件已经完成时,将$('#hdnArgs').val(window.args);
值设置为hdnArgs ..
<强>解决方案强>
我认为你需要将值作为QueryString传递给Page_load
var win = window.open('mypage.aspx?Args='+this.Args,'_self');
和在ASPX页面
protected void Page_Load(object sender, eventargs e)
{
string data = Request.QueryString["Args"];
}
如果您有大量数据,也可以使用Page Postback发送数据。
答案 1 :(得分:0)
确认:
您需要查看asp.net页面的生命周期,例如:https://msdn.microsoft.com/en-gb/library/ms178472%28v=vs.100%29.aspx
当起始页甚至考虑处理任何javascript时,启动页面的Page_Load早已不复存在。
也许,在Page_Load中,您可以直接加载新页面,例如
var content = new System.Net.WebClient().DownloadString(contentUrl);
并为#hvnArgs
解析它