2013-08-07 22 views
6

Tôi có trang nội dung trong ứng dụng asp.net sử dụng thẻ biểu mẫu. Chỉ có một trên trang vì vậy tôi đang bối rối tại sao nó cung cấp cho tôi những lỗi: Validation (HTML5): Yếu tố 'hình thức' không được lồng trong yếu tố 'hình thức'Hình thức lỗi asp.net không thể được lồng trong biểu mẫu phần tử?

Heres mã:

<%@ 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> 

Tôi có một biểu mẫu trong trang chủ của mình nhưng điều đó đã không cho tôi các vấn đề ngày hôm qua ..

Bất kỳ ý tưởng nào?

+0

"Tôi có một biểu mẫu trong trang chủ của mình nhưng điều đó không mang lại cho tôi sự cố ngày hôm qua .." => là nội dung của trang được hiển thị trong biểu mẫu trên trang chính không? – Stephen

Trả lời

7

Nếu kiểm soát <asp:ContentPlaceHolder ID="MainContent" > của bạn là, bản thân, bên trong một yếu tố form, thì bạn không nên đặt một form bên trong asp:content kiểm soát như bạn không nên có hình thức lồng nhau.

Từ HTML5 dự thảo làm việc:

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

CẬP NHẬT

Xem câu hỏi 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.

Cố gắng tái cấu trúc dự án của bạn sử dụng những nguyên tắc này:

  • Chỉ thêm form yếu tố để các trang aspx
  • Thêm nội dung chính để MasterPage từ các trang
  • Thêm bất kỳ nội dung cần được lồng trong một hình thức để một UserControl được đặt trong một trang.
+0

Cảm ơn đã giải quyết vấn đề đó! Tôi đã đặt trình giữ chỗ bên ngoài biểu mẫu của MasterPage. Nhưng bây giờ tôi nhận được lỗi này với GridView của tôi ..Control 'MainContent_GridView1' của loại 'GridView' phải được đặt bên trong một thẻ mẫu với runat = máy chủ. Và nếu tôi cố gắng đặt runat = "server" bên trong thẻ form1 của tôi, nó phàn nàn rằng tôi chỉ có thể có một thẻ biểu mẫu với runat = "server":/ –

+0

Tôi đã giải quyết nó. Đã không nhận ra tôi có thể đặt đặt giữ chỗ bên trong hình thức của trang chủ và sau đó tôi sẽ không cần một hình thức trong trang nội dung. –

+0

@KyleMit: Tôi có ít kịch bản khác nhau. Trang chủ của tôi có trình quản lý tập lệnh yêu cầu thẻ biểu mẫu có 'runat = server' và trang khác của tôi cũng có thẻ biểu mẫu xung đột với thẻ biểu mẫu của Trang chủ. Có lựa chọn nào không? – Mahadev

Các vấn đề liên quan