Html.BeginForm里面的Html.BeginForm MVC3

时间:2013-02-19 23:42:48

标签: html asp.net-mvc asp.net-mvc-3 razor

我有一个主视图,呈现两个部分视图。主视图包含表单内的两个部分视图。每个部分视图也包含表单。所有3个视图共享相同的viewmodel。我想要做的是使用主视图封装来自所有视图的数据,并使用部分视图运行特定的Controller动作结果。

我想知道这是否可行。在调试时,我看到我的内容总是发布到主视图表单的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>
}

2 个答案:

答案 0 :(得分:7)

正如Dave所提到的,嵌套表单不是有效的HTML。它不仅仅是HTML5,而是任何版本的HTML。

可能在某些浏览器中工作,在某些情况下,但它永远不会有效。即使它似乎有效,你也永远不会依赖于会发生什么。您最好的做法是在页面上使用多个非嵌套表单。

你能解释为什么你认为你需要嵌套表格吗?

答案 1 :(得分:5)

不,你不能拥有嵌套表格。遗憾。

请参阅HTML5 guidelines

“流量内容,但没有表单元素后代”