2011-08-30 11 views
16

開始ページと終了ページのステートメントをレイアウトページに入れて、複数のページでそれを繰り返す必要はありません。以下は、コードの簡略版です。剃刀で別のフォームの中に1つのフォームをネストすることは可能ですか?

@using(Html.BeginForm()) 
{ 
    @RenderBody() 

    <input type = "submit" name = "nextButton" value = "Next-->" /> 
} 

状況はうまくいきます。残念ながら、いくつかの "削除"ボタンがあるページがあります。私は各削除ボタンのフォームを生成して、削除する項目のIDをコントローラに送り返すことができます。

もう1つのフォームが既にあることを知っていますか?

+0

興味深い..「私はレイアウトページにbegin/end formステートメントを置いています...」あなたはウェブフォームを再現する道の一つのステップのようですね。 ;) – NotMe

+0

@Chris Lively:面白い???私が対処しなければならなかったすべてのTagBuilderで、何をすべきか分かりませんでした。 – Richard77

答えて

20

Mrchiefが述べているように、HTML仕様ではネストされたフォームが禁止されています。 MVCは標準HTMLを生成するだけなので、仕様の枠組みの中で作業する必要があります。

2つのマスターレイアウトを作成し、ほとんどの時間に基づいてフォームを使用するのではなく、埋め込みフォームを詳細に制御する必要がある場合は、フォームなしで1つを使用します。

これは、実際にフォームを必要な場所で正確に使用する必要がある理由です。

+0

実際に私はちょうど提案したものに近づいていました。私はちょうどレイアウトからそのページを継承していないし、それは働いた。しかし、レイアウトからすべての削除ボタンが含まれているはずのページにすべてをコピー/ペーストする必要がありました。しかし、私はあなたが提案したように別のレイアウトを持つつもりです。 – Richard77

+1

@ Richard77 - *レイアウト*も入れ子にすることができます。したがって、あなたは標準レイアウトを持つことができます。次に、最初のページをレイアウトとして使用する別のレイアウトを作成できますが、フォームは含まれています。次に、どちらのレイアウトをクライアントページにするかを選択できます。この方法では、コードを複製する必要はありません。 –

8

を支援するための

おかげで、すべてのフォームは、FORM要素で囲む必要がありW3 specs

あたりのような形態のネスティングが許可されていません注意してください。 1つの文書に複数のフォームがありますが、FORM要素には をネストすることはできません。

ネスティングフォームの警告に関するインターセット記事hereがあります。

この場合、単一のフォームではなく、ボタンごとにformを生成する方が適切です。

ASP.Net Webフォームでは、runat=server属性(および1ページあたり1つのみが許可されていることを保証するフレームワーク)を使用して、ページ上に複数のフォームを作成することが制限されていました。 MVC formsは純粋なHTMLなので、それらの複数を持つことができます。

関連する問題