创建一个全新的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>
在那里阻止。如果你删除它一切正常。
答案 0 :(得分:3)
通常,ASP.NET基于单个表单标记工作。你看到你做的症状,而不是一个彻头彻尾的错误,这真的是唯一令人惊讶的部分。因此,您不应该尝试嵌套表单标记。从最低主页到最外层页面应该只有一个表单标记。
<强>更新强>
这肯定是IE9中的一个错误。如果您使用Fiddler查看通过网络发送的实际标记,则代码不会重复。
答案 1 :(得分:3)
嵌套表单标签会导致无效的HTML,并且您在IE9中看到的呈现很可能是由此导致的。您在开发人员工具中看到的DOM是呈现的而不是作为HTTP响应接收的内容