我们在bootstrap模式中使用runat =“server”标记呈现ASP.Net Web表单。我们使用内置的bootstrap功能来使用jQuery加载函数执行get请求,然后将响应插入bootstrap模式标记。
asp.net Web表单在回发时返回HTTP状态代码204(无内容)这意味着我们可以提交表单,ASP.Net服务器端点击事件适当触发,浏览器不会尝试呈现响应。然后我们用一些javascript关闭bootstrap模式。
这在IE10,Firefox,Chrome和Safari的Windows上都能很好地运行。然而,在iPad上,Safari通过将原始页面标记显示为文本来响应204状态代码。我也尝试过302 Not Modified,它也没有解决问题(并且在语义上并不正确)。
我搜索过类似的问题,并且只发现了对2008年旧的webkit错误的引用,其中代码被描述为在收到204时呈现空白页。
解决方法
我也尝试将Response对象的SuppressContent属性设置为true:
if (!Page.IsPostBack)
{
// Do page rendering stuff
}
else
{
Response.StatusCode = (int)HttpStatusCode.NoContent;
Response.SuppressContent = true;
}
这确实有助于Safari不再将原始页面标记呈现为文本,通过javascript调用关闭引导模式,但safari显示在地址栏中的模式中加载的页面的URL,其行为类似于加载页面但从未这样做。用户可以使用该应用程序并请求其他页面没有问题,因此我们可以认为这是一个解决方法。但是,我想找一些更清洁的东西。
有任何想法或建议吗?
注意:我们正在重构旧版网络应用的用户界面,无法完全改变网页的运作方式。