#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 :-)).
Альтернативным подходом было бы просто сохранить уникальный идентификатор в виде скрытого поля и внутри действия контроллера использовать этот идентификатор для извлечения соответствующей модели из вашего базового хранилища данных.