Javascript XHTML与使用content type=“application/XHTML+xml”的组件不兼容

Javascript XHTML与使用content type=“application/XHTML+xml”的组件不兼容,javascript,asp.net,xhtml,menu,content-type,Javascript,Asp.net,Xhtml,Menu,Content Type,我正在使用ASP.NET 4.0并测试ASP.NET XHTML与某些组件的兼容性,发现服务器控件与XHTML不能正常工作 我希望浏览器将页面视为XHTML,而不是HTML文档,这是HTML/文本内容类型的默认设置。因为只有最新的浏览器才能识别这种模式,也就是从版本9开始,我使用的是内容类型协商,请参阅:在浏览器支持或不支持时正确处理 void Application_PreSendRequestHeaders(object sender, EventArgs e) {

我正在使用ASP.NET 4.0并测试ASP.NET XHTML与某些组件的兼容性,发现服务器控件与XHTML不能正常工作

我希望浏览器将页面视为XHTML,而不是HTML文档,这是HTML/文本内容类型的默认设置。因为只有最新的浏览器才能识别这种模式,也就是从版本9开始,我使用的是内容类型协商,请参阅:在浏览器支持或不支持时正确处理

    void Application_PreSendRequestHeaders(object sender, EventArgs e)
    {
        if (Array.IndexOf(Request.AcceptTypes, "application/xhtml+xml") > -1)
        {
            Response.ContentType = "application/xhtml+xml";
        }
    }
这就是说,我的应用程序会相应地运行,除了组件,它不能正确地呈现

我发现问题出在WebResource.axd生成的javascript中,该javascript用于处理菜单组件

有人遇到过这样的问题,并想出了一些解决办法


提前谢谢。

问题本身没有解决。为了使网站能够正确呈现,我只需继续将其页面作为html/文本提供,删除内容类型协商。

我不能提供太多帮助,但我不喜欢asp强迫你做这样的事情。我希望对这样的事情有更多的控制。我不认为内容型谈判有什么好处。在真正的XHTML模式中存在着显著的DOM差异,绝大多数脚本都不是为了处理这种差异而编写的,它会破坏IE中的缓存,除非您在不设置Vary头的情况下这样做,否则它会破坏公共缓存。@bobince感谢您的评论。事实上,我已经对这个问题做了一些研究,我意识到使用mime类型application/XHTML+xml服务的真正XHTML页面与使用mime类型text/html服务的符合标记的XHTML页面之间存在着各种不同。在前者中,页面被视为XML文档,而在另一种情况下,页面则不被视为XML文档。Javascript和DOM利用率也存在差异,请参见:。ASP.NET 4.0组件还不能与真正的XHTML页面完全兼容。