Этот же вопрос был задан здесь , и был дан ответ, который является работоспособным, но с окончательной доработкой инфраструктуры ASP.Net MVC мне стало интересно, есть ли лучшее решение.
Если у меня есть следующая структура классов, как создать страницу представления и, что более важно, вернуть данные обратно в контроллер.
public class Person {
public int Id {get;set;}
public string Name {get;set;}
public IList<TelNos> TelNos {get;set;}
}
public class TelNos{
public string Type {get;set;}
public string Number {get;set;}
}
Насколько я понимаю, на странице я мог бы включить следующее (при условии строго типизированного представления):
<% foreach (var telNo in Model.Product.TelNos)
{%>
<p><label for="telNo.Type">Type of Number</label>
<%= Html.TextBox("telNo.Type")%>
<%= Html.ValidationMessage("telNo.Type", "*")%>
</p>
<p><label for="telNo.Number">Type of Number</label>
<%= Html.TextBox("telNo.Number")%>
<%= Html.ValidationMessage("telNo.Number", "*")%>
</p>
<%} %>
Предполагая, что я инициировал 2 объекта TelNos, я бы увидел 2 набора текстовых полей в представлении.
Когда эта форма отправляется обратно, предложение по предыдущему сообщению заключалось в том, чтобы перебрать коллекцию FormCollection в методе post:
[AcceptVerbs( HttpVerb.POST )]
public ActionResult Whatever( FormCollection form )
{
....
}
Однако является ли это сейчас лучшим подходом, или дальнейшие обновления MVC предоставили лучшее решение?
Спасибо, Ричард