- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 iframe asp.net 页面有问题。浏览器 url 包含我需要在 iframe 页面中使用的参数。显然我无法通过 .NET 进行访问,所以我想到了在 Page_Load 方法末尾添加这样的内容:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bool isReloaded = Request.QueryString.GetValue<bool>("reloaded");
ContentId = Request.QueryString.GetValue<int>("contentId"); //I need this value
if (!isReloaded)
{
StringBuilder js = new StringBuilder("<script language='javascript'>");
js.Append("var last = window.top.location.href.substring(window.top.location.href.lastIndexOf('/') + 1, window.top.location.href.length); ");
js.Append("window.location.href = window.location.href + '?reloaded=true&contentId=' + last;");
js.Append("if(window.location.href.indexOf('reloaded=true') == -1) window.location.reload();");
js.Append("<" + "/script>");
Response.Write(js.ToString());
}
}
}
在快捷方式中,我使用 Javascript 来获取我需要的值并触发 reload() 但更改了 QueryString。
Page_Load 再次触发,现在 bool isReloaded 填充为 true。条件 (!isReloaded) 阻止这次 javascript 将不会添加到响应中。我不知道为什么,但是 Page_Load 再次触发,这次没有添加参数,所以情况与开始时相同,并且再次添加 JS 等。
结果是 Page_load 无休止地触发。我做错了什么 ?原因是什么?
最佳答案
如果你看一下你的代码,你会看到这一行:
js.Append("if(window.location.href.indexOf('reloaded=true') == -1) window.location.reload();");
您正在检查 location.href
中的“重新加载”变量,但请注意,一旦您更改位置,您的页面就会重新加载,并且您的脚本在完成之前会继续执行,因此它会导致在没有查询字符串的情况下一遍又一遍地重新加载页面。
删除这一行,它应该可以正常工作。
另一件事是,我稍微更改了您的代码以在页面上注册脚本而不是response.write它,
应该没有什么区别,但如果您的代码仍然无法工作,请尝试我的版本:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bool isReloaded;
int ContentId;
bool.TryParse(Request.QueryString["reloaded"],out isReloaded);
int.TryParse(Request.QueryString["contentId"],out ContentId); //I need this value
if (!isReloaded)
{
StringBuilder js = new StringBuilder();
js.Append("var last = window.top.location.href.substring(window.top.location.href.lastIndexOf('/') + 1, window.top.location.href.length); ");
js.Append("window.location.href = window.location.href + '?reloaded=true&contentId=' + last;");
ExecScript(js.ToString());
}
}
}
void ExecScript(string script)
{
Page page = HttpContext.Current.CurrentHandler as Page;
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("AttachedScript"))
{
page.ClientScript.RegisterClientScriptBlock(page.GetType(), "AttachedScript", script, true);
}
}
关于c# - Page_Load 无限次触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24554275/
我有一个母版页和一个使用母版页的网页。 在这两个中我都有一个 Page_Load 事件处理程序。 Page_Load 处理程序按什么顺序调用?先内容后大师还是先大师后内容? 最佳答案 内容页加载事件将
在我的母版页上,我在 Page_Load 事件中有一个小方法,用于检查用户是否已登录,如果没有,则将他们重定向到登录页面。 问题是,对于我的一些页面,Page_Load 事件假定用户已登录,并且这些事
我的 iframe asp.net 页面有问题。浏览器 url 包含我需要在 iframe 页面中使用的参数。显然我无法通过 .NET 进行访问,所以我想到了在 Page_Load 方法末尾添加这样的
我有一个名为 frmLogin 的表单。我在 Login_1Authenticate 事件处理程序中有代码检查输入的用户名和密码的安全级别。然后根据安全级别,它将显示或不显示我名为 frmMain 的
Page_Load() 方法可以是async 吗?我问好像我已经这样声明了 protected void Page_Load() 一切都按预期加载。如果我这样声明它 protected async v
我在 SharePoint2013 环境之上部署了 Project Server 2013,并且部署了一个 Web 部件,该部件在 Page_Load 期间在页面上注册 JavaScript。在此 J
我有这个 javascript 模态,我想用它来报告错误。只有在页面加载之前执行代码,一切才能正常运行。所以结果是我在 head 标记之前有我的 javascript,这意味着什么都没有执行! 有什么
我有一个母版页和两个网页,WebForm1 和 WebForm2。在母版页上有两个 LinkButtons 以转到 WebForm1 或 WebForm2。 当我单击 LinkButton 转
我在页面的 Page_Load 事件上设置了一个断点,该事件永远不会被触发。没有警告或消息表明断点可能永远不会被击中,即使页面加载成功它也永远不会被击中。 成功登录后,使用登录控件的 Destinat
我在对我的解决方案进行 Checkmarx 扫描时遇到跨站点历史记录操作问题。 我得到的问题是: xyz\abc.aspx.cs 第 40 行的 Page_Load 方法可能会泄漏服务器端条件值,从而
我喜欢给 ASPX 网站打补丁,这样我就可以在编译的程序集中向 Page_Load 方法添加内容。 我的第一个想法是向 ASPX 文件添加一个包含第二个 Page_Load 方法的脚本标记,如下所示:
一个 child 类 我正在使用的用户控件有一系列父类,最终继承自 System.Web.UI.UserControl . public BasestClass : AnotherClassExten
我试图在加载 Web 表单时禁用两个列表框,但列表框并未禁用。我尝试了下面的代码,但它仍然不适用于我的情况。请让我知道我哪里出错了。 设计师代码
问题是我想填充 var docfiles = new List();用户使用 dropzone js 上传了一些文件名,但列表不会填充,因为这是第一次加载页面 httpRequest.Files.Co
我有两个按钮,预览和保存。通过预览按钮,用户可以根据格式查看数据,然后保存。 但是,当单击预览时,附加到 ajaxcontrol(日历)的一个文本框将变为空,用户必须在保存之前填写日期。这要怎么处理呢
我有一个奇怪的问题。这是场景 这是我的文件: Project1.aspx Project2.aspx 它们的设置完全相同,包括它们的 Page_Load 函数: Protected Sub Page_
我有这个控制权: 这里是我如何将服务器端的数据绑定(bind)到上面的控件: ddlPaging.Visible = true; ddlPaging.DataSource
我在母版页上有一个下拉列表,我想在加载内容页时传递内容页上的选定值。我的问题是,只有当我更改下拉列表中的值时,该值才会传递。因此,当页面加载时,我必须从下拉列表中重新选择以捕获下拉列表的值。如果我正在
static async void SendTweetWithSinglePicture(string message, string image) { var auth = new Sing
我试图在 ASP.NET 页面上编辑 Page_Load 表单中的文本框文本,但是当我尝试编辑 TextBox1.Text 时,它会抛出 NullReferenceException,因为 TextB
我是一名优秀的程序员,十分优秀!