2013-02-19 65 views
1

我有一个呈现两个部分视图的主视图。主视图包含表单中的两个部分视图。每个部分视图还包含表单。所有3个视图共享相同的视图模型。我想要做的是用主视图封装所有视图中的数据,并使用局部视图运行特定的控制器操作结果。Html.BeginForm中的Html.BeginForm MVC3

我想知道这是否可能。调试时,我发现我的内容总是发布到主视图窗体的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> 
} 

回答

7

戴维提到,这是不合法的HTML嵌套形式。这不仅仅是HTML5,而是任何版本的HTML。

可能在某些浏览器中工作,在某些情况下,但它永远不会有效。即使它看起来有效,你也永远无法依靠即将发生的事情。您的最佳行动方案是在页面上使用多个非嵌套表单。

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

+0

阿门。也许是一个很好的附加问题,这些部分可以封装窗体而不是嵌套窗体吗? – 2013-02-20 02:26:16

+0

谢谢你们,我不太了解这个概念。是的,这些都是我需要的另一种方式。哪个是将从两个部分视图获得的ID值传递回视图模型。 – WiseGuy 2013-02-20 02:42:59

+1

@BenjaminRandal - 您可以通过简单地将所有数据作为单个帖子发布到一起来实现。 – 2013-02-20 03:26:31

5

不,你不能嵌套形式。抱歉。

HTML5 guidelines

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

+0

感谢您的链接人。 – WiseGuy 2013-03-18 19:53:11