Вы не можете размещать несколько форм вместе. Но вы также можете разместить несколько элементов в форме или несколько List<T>
.
Для этого вам нужно сделать ваш вид строго типизированным, а затем в действии вы можете иметь параметр типа List<Customer>
или модель контейнерного представления со свойством типа List<Customer>
, которое будет выглядеть следующим образом:
public class CustomersModel
{
public int Amount { get; set; }
public List<Customer> NewCustomers{ get; set; }
CustomersModel()
{
Amount = new List<Customer>();
}
}
Измените ваше представление, чтобы оно было строго типизировано с этой моделью, и визуализируйте элемент управления вводом с помощью строго типизированных помощников, чтобы избежать глупых ошибок опечаток, которые могут произойти с использованием магической строки, а также воспользоваться преимуществами взаимодействия моделей и визуальных студий и защитить время от ошибок при компиляции:
@model YourNamespace.Models.CustomersModel
@for (int i = 0; i < Model.Amount; i++)
{
<div class="space">
<div><br /></div>
<div>Gast @(@i + 1)</div>
</div>
<div class="space">
<div>Name</div>
<div>@Html.TextBoxFor(x => Model.NewCustomers[i].Name)</div>
</div>
<div class="space">
<div>Email</div>
<div>@Html.TextBoxFor(x => Model.NewCustomers[i].Emailaddress)</div>
</div>
<div class="space">
<div>House Number</div>
<div>@Html.TextBoxFor(x => Model.NewCustomers[i].HouseNumber)</div>
</div>
<div class="space">
<div>Zipcode</div>
<div>@Html.TextBox(For(x => Model.NewCustomers[i].Zipcode)</div>
</div>
@Html.HiddenFor(x=> Model.NewCustomers[i].Id,i)
}
теперь в контроллере вы можете иметь строго типизированный параметр:
[HttpPost]
public ActionResult SecondStepProcessValid(CustomersModel model)
{
foreach (var c in model.NewCustomers)
{
customerRepository.Create(c);
}
return View("ThirdStepProcess");
}
Надеюсь, что это дает идею.