Есть ли какой-нибудь способ использовать @Html.HiddenFor для полной модели?

#asp.net-mvc-3 #html-helper

#asp.net-mvc-3 #html-помощник

Вопрос:

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

   @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.Hidden для идентификатора — это не вариант для меня.

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

Комментарии:

1. Ты не хочешь этого делать! У вас должен быть передан только первичный ключ объекта, затем просмотрите его на стороне сервера … в противном случае клиент может изменить свой адрес и т.д. Если вы не сохраняете их в БД, но вам нужно, чтобы они сохранялись, используйте вместо этого session или cookies или localstorage или что-то еще

Ответ №1:

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

 public class MyModel
{
    [HiddenInput]
    public int MyProperty { get; set; }
}
 

Комментарии:

1. @Darin amp; @ Haythem спасибо, я проверю оба ответа в конце этой недели!

Ответ №2:

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

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