IE9正在复制母版页内容

时间:2011-04-11 15:51:06

标签: c# asp.net internet-explorer-9

创建一个全新的asp.net webforms项目。 添加母版页和使用该母版页的网页表单页面。

母版页

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="AspWeird.Site1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <div id="main_content_container">
            <div id="main_content_row">
                <div id="main_content_column">
                  <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">

        </asp:ContentPlaceHolder>
                </div>

                <div id="side_content_column">

                </div>
            </div>
        </div>

    </div>
    </form>
</body>
</html>

webforms页面

<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="AspWeird.WebForm1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<h2>Hello World</h2>

<div>
    <form></form>
</div>

</asp:Content>

现在在IE9中查看页面并打开F12 Developer工具

如果你看,你会看到母版页的那一部分看起来像在DOM中两次...... 检查网络捕获,服务器看起来正在返回正确的HTML。 使用firefox或chrome时没有任何问题。

screenshot http://dl.dropbox.com/u/1994980/IE9_duplicate_content.PNG

这只发生在

<div><form></form></div>

在那里阻止。如果你删除它一切正常。

Whole project zipped up

2 个答案:

答案 0 :(得分:3)

通常,ASP.NET基于单个表单标记工作。你看到你做的症状,而不是一个彻头彻尾的错误,这真的是唯一令人惊讶的部分。因此,您不应该尝试嵌套表单标记。从最低主页到最外层页面应该只有一个表单标记。


<强>更新

这肯定是IE9中的一个错误。如果您使用Fiddler查看通过网络发送的实际标记,则代码不会重复。

答案 1 :(得分:3)

嵌套表单标签会导致无效的HTML,并且您在IE9中看到的呈现很可能是由此导致的。您在开发人员工具中看到的DOM是呈现的而不是作为HTTP响应接收的内容