2013-08-07 12 views
6

Mam stronę treści w aplikacji asp.net, która używa znacznika formularza. Jest tylko jeden na stronie, więc jestem zdezorientowany, dlaczego jej dać mi błąd: Walidacja (HTML5): element „forma” nie musi być zagnieżdżone w elemencie „postaci”Formularz błędu asp.net nie może zostać zagnieżdżony w formularzu elementu?

Herezje kod:

<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/Site.Master" CodeBehind="Default.aspx.cs" Inherits="WebApplication6._Default" %> 
<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="MainContent"> 
    <div> 
     <form id="form1"> 
     <asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="SqlDataSource1" AllowPaging="True" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"> 
      <Columns> 
       <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" ReadOnly="True" SortExpression="Id" /> 
       <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> 
       <asp:BoundField DataField="Director" HeaderText="Director" SortExpression="Director" /> 
       <asp:BoundField DataField="DateReleased" HeaderText="DateReleased" SortExpression="DateReleased" /> 
       <asp:TemplateField HeaderText="Selection"> 
        <ItemTemplate> 
        <asp:CheckBox ID="Selections" runat="server" OnCheckedChanged="CheckBox1_CheckedChanged1" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT * FROM [Movies]"></asp:SqlDataSource> 
     <asp:Button ID="Button1" runat="server" Text="Select Movies" OnClick="Button1_Click" CausesValidation="False" /> 
     <asp:TextBox ID="TextBox1" Text="First Name" runat="server"></asp:TextBox> 
     </form> 
    </div> 
</asp:Content> 

Mam formularz na stronie głównej, ale to nie dawało mi problemów wczoraj ..

Jakieś pomysły?

+0

"Mam formularz na stronie głównej, ale to nie dawało mi problemów wczoraj .." => czy treść strony jest wyświetlana w formularzu na stronie głównej? – Stephen

Odpowiedz

7

Jeśli kontrola <asp:ContentPlaceHolder ID="MainContent" > jest sama, wewnątrz elementu form, to nie powinien umieścić form wewnątrz kontroli asp:content jak ty nie powinni mieć zagnieżdżone formy.

Z HTML5 projekt pracy:

4.10.3 The form element
Content model:
Flow content, but with no form element descendants.

UPDATE

Zobacz pytanie A page can have only one server-side Form tag:

Master pages should not contain form tags in general because they are meant to be used only as the base layout of your content page.

Try zrestrukturyzować swój projekt za pomocą poniższych wskazówek:

  • dodać Tylko form elementy do stron aspx
  • Dodaj głównej treści MasterPage ze stron
  • Dodaj żadnej treści, która musi być zagnieżdżona w formie do UserControl, który jest umieszczony w obrębie strony.
+0

Dzięki, że rozwiązałeś ten problem! Umieściłem symbol zastępczy poza formularzem MasterPage. Ale teraz otrzymuję ten błąd z moim gridview..Control "MainContent_GridView1" typu "GridView" musi być umieszczony wewnątrz tagu formularza z runat = serwer. A jeśli spróbuję umieścić runat = "server" w moim tagu form1, narzeka, że ​​mogę mieć tylko jeden tag formularza z runat = "server":/ –

+0

Rozwiązałem go. Nie zdawałem sobie sprawy, że mogę umieścić element zastępczy w formularzu strony wzorcowej, a następnie nie potrzebowałbym formularza na stronie treści. –

+0

@KyleMit: Mam trochę inny scenariusz. Moja strona wzorcowa ma menedżera skryptów, który wymaga tagu formularza z 'runat = server', a moja druga strona ma również tag formularza, który jest niezgodny z tagiem formularza strony głównej. Czy jest jakaś opcja? – Mahadev

Powiązane problemy