2013-02-19 4 views
1

У меня есть основной вид, который отображает два частичных вида. Основной вид охватывает оба частичных вида в форме. Каждый из частичных представлений также содержит формы. Все 3 представления разделяют одну и ту же модель просмотра. Что я хочу сделать, это инкапсулировать данные из всех представлений с основным видом и выполнить конкретные результаты действий контроллера с частичными представлениями.Html.BeginForm внутри Html.BeginForm MVC3

Я хочу знать, возможно ли это. При отладке я вижу, что мой контент всегда отправляется в HTTPPost формы Main views. У меня есть кнопки для каждой из форм соответственно. Извините за пост кода, его выходы все расстались.

Главный Вид:

@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

Аминь. Может быть, хороший дополнительный вопрос, могут ли эти частицы иметь инкапсулированные формы, а не вложенные формы? –

+0

Спасибо вам обоим, я не был слишком осведомлен о концепции. Да, theres должен быть другим способом сделать то, что мне нужно. Который должен передать значения идентификатора, полученные из обоих частичных представлений, назад к модели представления. – WiseGuy

+1

@BenjaminRandal - вы можете добиться этого, просто разместив все данные вместе как одну запись. –

5

Нет, вы не можете иметь вложенные формы. Сожалею.

См HTML5 guidelines

«содержания потока, но без каких-либо элементов формы потомков»

+0

Спасибо за ссылку человека. – WiseGuy