我有一个我目前无法处理的奇怪问题。我尝试了很多东西而没有任何帮助。
我有一个简单的页面,其中包含4个隐藏输入的表单。这些输入用jQuery填充。完成后,我使用jQuery提交表单。
对于用户没有Javascript的可能性,我在第一次请求时在我的页面加载事件中包含了metaRefresh
标记。
当用户没有JavaScript时,它按预期工作。但是当它被激活时,即使执行了重定向,在这些定义的10秒之后,即使我到达下一页,元标记也会执行。
我对这一刻感到非常沮丧,这对我来说完全是胡说八道,我不明白这是怎么回事。是否存在导致这种特殊行为的特殊情况?
也许还有一个备用选项可以在停用JS时强制进行页面更改。
增加:
添加Refresh-Tag的代码:
var refreshTag = new HtmlGenericControl("meta");
refreshTag.Attributes.Add("http-equiv", "refresh");
refreshTag.Attributes.Add("content", "10; URL=" + Request.RawUrl + "&rp=3");
head.Controls.Add(refreshTag);
刷新代码:
在所有情况下,刷新标签都将被删除。
Response.Redirect(link, false);
Context.ApplicationInstance.CompleteRequest();
return;
OR
Response Redirect(link,true);
OR
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", link);
答案 0 :(得分:0)
为了防止重定向行为,您应该避免将元标记包含在母版页中,因为即使重定向后它也会在每个页面上呈现。
另一种选择可能是将元标记包装在noscript
元素中,只有在Javascript被停用时才会执行元刷新:
var noscriptTag = new HtmlGenericControl("noscript");
var refreshTag = new HtmlGenericControl("meta");
refreshTag.Attributes.Add("http-equiv", "refresh");
refreshTag.Attributes.Add("content", "10; URL=" + Request.RawUrl + "?rp=3");
noscriptTag.Controls.Add(refreshTag);
this.Header.Controls.Add(noscriptTag);
Head
元素中的渲染输出如下所示:
<noscript>
<meta http-equiv="refresh" content="10; URL=/?rp=3"></meta>
</noscript>
有关noscript标记的更多信息,请查看:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript
这将阻止激活JS时的元标记行为。