У меня есть следующая модель:
public class ContratoDetailsViewModel
{
[StringLength(50)]
[RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$")]
[DisplayName("E-Mail Adm.")]
public string emailAdm { get; set; }
}
public class ContratoDetailContainerViewModel
{
public ContratoDetailsViewModel contrato { get; set; }
public IList<ContratoModels.CCasinoViewModel> ccasinos { get; set; }
}
public class CCasinoViewModel
{
public short codigo { get; set; }
public List<SelectListItem> listCasinos { get; set; }
}
следующий вид:
@model ContratoModels.ContratoDetailContainerViewModel
@{
...
}
@using (Html.BeginForm(new { currentaction = ViewBag.mode }))
{
...
@Html.EditorFor(m => m.contrato.emailAdm, state1)<br />
@Html.EditorFor(m => m.ccasinos,"test")
<input type="submit" value="Save" />
}
в папке "EditorTemplates" у меня есть шаблон с именем "test.cshtml":
@model List<ContratoModels.CCasinoViewModel>
@for (int i = 0; i < Model.Count(); i++)
{
@Html.DropDownListFor(m => m[i].codigo,Model[i].listCasinos)
}
Мой пост пост контроллера выглядит так:
[HttpPost]
public ActionResult Details(ContratoModels.ContratoDetailContainerViewModel model, FormCollection form)
{
var contrato = model.contrato;
var casinos = model.ccasinos;
}
Перед отправкой инициализируются ccasinos, codigo и listCasinos.
когда я нахожусь в режиме отладки, я вижу их значение ... отображение формы работает как шарм.
НО ... когда я отправляю форму, модель.ccasinos всегда пуста !! Зачем ?
Большое спасибо за ваш ответ.
примечание: я использую EditorFor с дочерним элементом моей основной модели, но если есть лучшее решение
для отображения и отправки с MCV 3 мне интересно ...