2014-10-03 3 views
0

Я столкнулся с этой проблемой, мне нужно вставить тег формы внутри тега формы. Моя главная страница имеет свой HTML код, который содержит тег формы, в том, что у меня есть ContentPlaceHolder: Это мой HTML-страница:тег формы ASP.Net в теге формы

<html> 
    <header> 
    //my code here. 
    </header> 

    <body> 
    <form> 
     <asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server"></asp:ContentPlaceHolder> 
    </form> 
    </body> 
<html> 

теперь я хочу сделать что-то подобное в моей page.aspx: страница. ASPX

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="Server" defaultfocus="Submit"> 

    <form id="form1" runat="server"> 
    <div> 
     //my code here 
    </div> 
    </form> 

</asp:Content> 

Ошибка я получаю: страница может иметь только один серверный тег формы.

После большого чтения и исследований я понял, что это невозможно, но я не читал, что будет решением, пожалуйста, сообщите нам способ/способы решения этой проблемы. Спасибо, что прочитал мой вопрос.

Это мой код теперь page.aspx, но мой постбэк не работает:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="Server" defaultfocus="Submit"> 

     <div> 
     <span style ="font-family:Arial">Select Country : </span> 
     <asp:DropDownList ID="ddlCountry" runat="server" Enabled = "true" AutoPostBack = "true" OnSelectedIndexChanged="ddlCountry_SelectedIndexChanged"> 
     <asp:ListItem Text = "--Select Country--" Value = ""></asp:ListItem> 
     </asp:DropDownList> 
     <br /><br />   
    </div> 
</asp:Content> 

SAM, Я добавил это к page.aspx:

<asp:DropDownList ID="DropDownList1" runat="server" Enabled = "true" AutoPostBack = "true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> 
     <asp:ListItem Text = "--Select Country--" Value = "0"></asp:ListItem> 
     <asp:ListItem Text = "Sri Lanka" Value = "1"></asp:ListItem> 
     </asp:DropDownList> 

и в моей C# file, у меня есть:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    label1.Text = "you selected Sri Lanka"; 
} 

Когда я выбираю Шри-Ланку, ничего не происходит.

+1

Могу ли я спросить, почему вы * необходимо * вставить тег формы на свою страницу, а также на свою главную страницу? Это просто действие в качестве контейнера, или есть какая-то другая причина? – sh1rts

+0

это просто контейнер. – user3345212

+0

Если вам нужно использовать Forms для каждой страницы, просто не используйте Masterpages и ContentPages. Просто используйте веб-формы (это доступно, когда вы добавляете элементы в свой проект) – Sam

ответ

0

У вас не может быть серверная сторона form в пределах другой серверной части form. Вы должны наследовать свою страницу от MasterPage, а затем использовать ContentPlaceHolder, чтобы удерживать элементы управления вашей страницы.

E.g. Ваш page.aspx должен выглядеть как-то вроде этого

<%@ Page Title="My Page" Language="C#" MasterPageFile="~/MySite.Master" AutoEventWireup="true" CodeBehind="Page.aspx.cs" Inherits="Test._Page" %> 

<asp:Content runat="server" ID="MyContent" ContentPlaceHolderID="MyContent"> 
    <%-- Your controls --%> 
</asp:Content> 

Если вам нужно сделать частичные обновления использовать UpdatePanel

UPDATE

Вы должны добавить более чем на 1 пункт, чтобы вызвать OnSelectedIndexChanged событие управления DropDownList

Например

<asp:DropDownList ID="ddlCountry" runat="server" Enabled = "true" AutoPostBack = "true" OnSelectedIndexChanged="ddlCountry_SelectedIndexChanged"> 
     <asp:ListItem Text = "--Select Country--" Value = "0"></asp:ListItem> 
     <asp:ListItem Text = "Sri Lanka" Value = "1"></asp:ListItem> 
     </asp:DropDownList> 
+0

не работает, спасибо за попытку. – user3345212

+0

Пожалуйста, найдите мое новое обновление. Спасибо! – user3345212

Смежные вопросы