В моем приложении MVC У меня есть мнение, что модель выглядит примерно так:ASP.net MVC - Отдельные ViewModel для действий POST
public class ComplexViewModel
{
public ComplexDetailsViewModel Details1 { get; set; }
public ComplexDetailsViewModel Details2 { get; set; }
}
public class ComplexDetailsViewModel
{
public int Id { get; set; }
public string DisplayValue1 { get; set; }
public string DisplayValue2 { get; set; }
// ...
}
Первоначально я делал следующее, на мой взгляд:
@Html.HiddenFor(model => model.Details1.Id)
@Html.HiddenFor(model => model.Details2.Id)
@Html.DisplayFor(model => model.Details1.DisplayValue1)
...
я ВЫВЕСИТЬ полную модель к контроллеру:
public ActionResult Post(ComplexViewModel model)
Я на самом деле не нужно ничего от ComplexViewMod эш для значений Id, за исключением, поэтому я решил создать еще одну модель представления, используемый специально для разноски данных:
public class PostViewModel
{
public int Details1Id { get; set; }
public int Details2Id { get; set; }
}
public ActionResult Post(PostViewModel model)
Проблема заключается в том, что теперь мой @HiddenFor(model => model.Details1.Id)
не отображает моей модели POST, поэтому ничего на самом деле не получает вывешенным.
Есть ли способ иметь отдельную структуру для моей модели POST и моей модели GET, все еще используя вспомогательный помощник HiddenFor
?
Я знал, что смогу это сделать, но я надеялся, что будет еще способ использовать помощников. Однако, похоже, это не так. – Dismissile
Вы можете использовать @ Html.Hidden вместо @ Html.HiddenFor(), чтобы выполнить это, правильно? – hawkke
Да, но я надеялся продолжать использовать HiddenFor, так как он автоматически добавляет префикс для вложенных шаблонов. – Dismissile