Есть ли способ использовать @ Html.HiddenFor для полной модели? - PullRequest
6 голосов
/ 01 ноября 2011

Есть ли способ использовать (или что-то похожее)

  @Html.HiddenFor 

для всей вашей модели.

Так что вместо того, чтобы делать что-то вроде этого:

  @Html.HiddenFor(model => Model.Person.Name)
  @Html.HiddenFor(model => Model.Person.LastName)
  @Html.HiddenFor(model => Model.Address.Street) 

используйте что-то вроде этого (этот пример не работает)

  @Html.HiddenFor(model => Model)

Я уже искал его в stackoverflow и в Google ... но ничего не нашел об этом.

Мне нужно придерживаться некоторых значений для разных моделей, которые не сохраняются в БД, поэтому использование только Html.HiddenFor ID для меня не вариант.

Заранее спасибо!

Ответы [ 2 ]

7 голосов
/ 01 ноября 2011

Выберите свойства, которые вы хотите использовать для скрытого ввода, и добавьте HiddenInputAttribute в вашу модель следующим образом:

public class MyModel
{
    [HiddenInput]
    public int MyProperty { get; set; }
}
3 голосов
/ 01 ноября 2011

Вы можете взглянуть на метод MVCContrib's Html.Serialize . Это своего рода эмуляция представления состояния (и внутренне она действительно использует ViewState: -)).

Альтернативным подходом было бы просто сохранить уникальный идентификатор как скрытое поле, и внутри действия контроллера использовать этот идентификатор для извлечения соответствующей модели из вашего основного хранилища данных.

...