2

2 つの部分ビューをレンダリングするメイン ビューがあります。メイン ビューには、フォーム内の両方の部分ビューが含まれます。各部分ビューにはフォームも含まれています。3 つのビューはすべて同じビューモデルを共有します。私がやりたいことは、すべてのビューからのデータをメイン ビューでカプセル化し、特定のコントローラー アクションの結果を部分ビューで実行することです。

これが可能かどうか知りたいです。デバッグすると、コンテンツが常にメイン ビュー フォームの HTTPPost に投稿されることがわかります。それに応じて、各フォームの送信ボタンがあります。コード投稿で申し訳ありませんが、すべて分割されて出てきます。

メイン ビュー:

@using (Html.BeginForm("Main", "Registration", FormMethod.Post, 
    new { @class="mainform" }))
{
    <form>
        <fieldset>
            <div id ="option1" class="conglomerate">
                @Html.Partial("_GetBusiness")
            </div> 
            <div id ="option2" class="dealership">
                @Html.Partial("_GetLocation")
            </div>
            <button type="submit" value="Create" class="buttonBlue" id="">
                <span>Create a new dealer</span>
            </button>
         </fieldset>
    </form>

部分 1

@using (Html.BeginForm("CreateBusiness", "Business", FormMethod.Post, 
        new { @class="buisinessform" }))
{
    <form>
        <div class="editor-field">
            @Html.DropDownListFor(m =>m.BusinessId, new SelectList(Model.Businesses, 
                "BusinessId", "BusinessName"), "")
        </div>
        <label>Your company not listed? Register yours below:</label>
        <div class="editor-label">
            @Html.LabelFor(model => model.BusinessName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.BusinessName)
            @Html.ValidationMessageFor(model => model.BusinessName)
        </div>
        <button type="Button" value="" class="buttonBlue"id="TestSubmit">
           <span>Add Dealer</span>
        </button>
        <div class ="confirm">
            <button type="submit" value="Create" class="buttonBlue" id="">
                <span>Click here to confirm dealer addition</span>
            </button>
        </div>
    </form>
}
4

2 に答える 2

7

Dave が言及しているように、フォームをネストするのは有効な HTML ではありません。これは HTML5 だけでなく、HTML のどのバージョンでも同じです。

特定の状況では、一部のブラウザーで機能する場合がありますが、有効ではありませんそして、たとえそれが機能しているように見えても、何が起こるかに決して依存することはできません. 最善の方法は、1 つのページでネストされていない複数のフォームを使用することです。

ネストされたフォームが必要だと思う理由を説明できますか?

于 2013-02-20T00:34:31.947 に答える
5

いいえ、フォームをネストすることはできません。ごめん。

HTML5 ガイドラインを参照

「コンテンツをフローしますが、フォーム要素の子孫がありません」

于 2013-02-19T23:48:31.810 に答える