0

私はこの問題を数週間解決しようとしてきましたが、本当にイライラしています。基本的に、私は1つのマスターページと1つのコンテンツページを含む単純なプロジェクトを持っています。次のコードは、コンテンツページにあるものです

    <%@ 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台のマシン(3台のウィンドウ7と1台のxp)で試しましたが、2台のマシンでのフォームの配置に関係なく機能し、他の2台でフォームを配置する必要がありました。

この問題を解決できる設定を教えてください。または、問題を解決するためのアドバイスを提供してください。コンテンツプレースホルダーの前にフォームが必要なので、削除することは問題外です。また、ある種の設定により、プロジェクトが別のマシンで正しく機能しなくなっていることも理にかなっています。

4

1 に答える 1

0

HTML仕様により、フォーム内にフォームを含めることはできません。私が正しく覚えているなら、あなたがこの種の構造を持っているとき、いくつかのブラウザは壊れます。IEは問題なく動作すると思います。

別のフォームが必要な場合は、そのフォームを<form id = "form1" runat = "server">の外側、具体的にはその上に配置します。それは有効です。

于 2010-11-10T14:21:29.343 に答える