web-dev-qa-db-ja.com

ページに含めることができるサーバー側フォームタグは1つだけです

マスターページを使用していますが、このページを実行すると、次のエラーメッセージが表示されます。

ページに含めることができるサーバー側フォームタグは1つだけです

この問題を解決するにはどうすればよいですか?

16
Manoj Wadhwani

私はあなたがこのようにしたと思います:

<asp:Content ID="Content2" ContentPlaceHolderID="MasterContent" runat="server">
  <form id="form1" runat="server">

 </form>
</asp:Content>

Formタグは必要ありません。マスターページに既に同じタグがあるためです。

したがって、それを削除するだけで機能するはずです。

17
Naveen Desosha

マスターページとエラーをスローしているページにフォームタグがあるようです。

1つしか持てません。

9
philhobgen

ページにこれらが含まれていますか

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">
</asp:content>

タグ、およびこれらの内部にすべてのコントロールがありますか? MasterPageにはFormタグのみが必要です。


私の理解と提案の一部を以下に示します。

Html要素はhtmlページの本文に配置でき、htmlページは複数の要素をサポートしますが、互いにネストすることはできません。W3Chtml仕様から詳細な説明を見つけることができます。

FORM要素

http://www.w3.org/MarkUp/html3/forms.html

また、ASP.NET Webフォームページについては、すべてのコントロールを含む単一のサーバー側フォーム要素に基づいているため、一般に複数の要素を配置することはお勧めしません。ただし、これはASP.NETページ(マスターページ)で引き続きサポートされており、マスターページの問題はサポートされていないネストされた要素が原因であり、同じレベルの複数の要素は問題ないはずです。例えば:

また、複数のフォームを使用してページを複数のページに投稿するだけの場合は、ASP.NET 2.0のページ間投稿に新しい機能を使用することを検討できると思います。これにより、ボタンコントロールを使用して、ページに複数のフォームを持たずに別のページにポストバックできます。

ASP.NET Webページでのクロスページ投稿

http://msdn2.Microsoft.com/en-us/lib...39(VS.80).aspx

http://msdn2.Microsoft.com/en-us/lib...40(VS.80).aspx

4
ahmed

1つのサーバー側フォームタグのみを使用します。

マスターページで<form runat="server">-1つだけにする必要があります。

なぜ複数必要なのですか?

3
Oded

"form"タグから "runat =" server ""を削除すると、確実に機能します。

以下のコードに示すように、現在のページをレンダリングすると、同じエラーが生成される場合があります

StringWriter str_wrt = new StringWriter();
HtmlTextWriter html_wrt = new HtmlTextWriter(str_wrt);
Page.RenderControl(html_wrt);
String HTML = str_wrt.ToString();

それで、どうやってそれをソートできますか?

0
panky sharma