0

我已经尝试解决这个问题好几个星期了,这真的很令人沮丧。基本上我有一个简单的项目,其中包括一个母版页和一个内容页。以下代码是在内容页面中找到的

    <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:Button ID="Button1" runat="server" Text="ButtonContent" 
        onclick="Button1_Click" />
</asp:Content>

该按钮绑定到一个简单的事件。设置断点以检测事件是否按预期触发。当表单放置在内容占位符上方时,该事件不会触发。

 <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> 
<!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>
    <form></form>
    </div>

    <div>
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">

        </asp:ContentPlaceHolder>
    </div>

    <div>


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

但是,当表单被移除或放置在内容占位符下方时,会触发该事件。另一方面,在某些机器上,我发现将表单放在内容占位符之前并不重要。我已经在 4 台机器(三台 windows 7 和一台 xp)上尝试了这个项目,无论两台机器上的表单放置如何,它都可以正常工作,并且已经在另外两台机器上放置了表单。

有人可以指点我一些可以解决此问题的设置或提供任何建议来解决我的问题。我在内容占位符之前需要一个表格,所以删除是不可能的。某种设置阻止项目在另一台机器上正常工作也是有道理的

4

1 回答 1

0

根据 HTML 规范,您不能在表单中包含表单。如果我没记错的话,当你有这种结构时,一些浏览器会崩溃。我认为 IE 工作正常。

如果您需要其他表单,请将其放在 <form id="form1" runat="server"> 之外 - 特别是在其上方。这是有效的。

于 2010-11-10T14:21:29.343 回答