Page_Load激发无限时间 - c#

我的iframe asp.net页面有问题。
浏览器网址包含我需要在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将不会添加到Response中。
我不知道为什么,但是Page_Load再次触发,这次没有添加参数,因此与开始时的情况相同,并且再次添加JS等。

结果是Page_load无限触发。
我做错什么了 ?是什么原因 ?

参考方案

如果您看一下代码,则有以下一行:

js.Append("if(window.location.href.indexOf('reloaded=true') == -1) window.location.reload();");

您正在检查location.href中是否有'reloaded'变量,但请注意,更改位置后,页面将立即重新加载,并且脚本在执行之前一直保持执行状态,因此会导致重新加载页面再次没有查询字符串。

删除此行,它应该可以正常工作。

不过,另一件事是,我对您的代码进行了一些更改以在页面上注册脚本,而不是将其写入响应。

它不应该有任何区别,但是如果您的代码仍然无法正常工作,请尝试使用我的版本:

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);
    }
}

如何在ASP.NET Page_Load事件中识别RadButton启动回发的原因? - c#

在我的ASP.NET页的Page_Load中,我试图确定某个按钮是否已单击并尝试回发:if (Page.IsPostBack) { if (Request.Params.Get("__EVENTARGUMENT") == "doStuff") doSomething(); } doStuff是标记内的JavaScrip…

Page.render()返回false - java

我正在使用phantomjs截取几个网页的屏幕截图。为了获得屏幕快照图像,我使用了以下代码。var page = require('webpage').create(); page.viewportSize = { width: 1200,height: 800}; page.open('http://<randomweb…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …