2014-09-25 4 views
0

как передать всю модель из представления в контроллер или функцию JavaScript.как передать всю модель из представления в контроллер или Javascript

Я видел, как построить модельные части модели в представлении из текстовых полей, а затем отправляется обратно на контроллер.

Мой вопрос в том, что уже есть модель, которая была передана в представление. Какой самый простой способ получить его? Мне не нужно изменять какие-либо данные моделей в представлении. Я просто хочу передать его обратно контроллеру.

+1

Если вы ничего не меняете, кажется, было бы быстрее просто отправить любой ключ, который вы использовали для создания модели, и позволить контроллеру просто восстановить его, поскольку у вас уже есть весь этот код. Меньшая загрузка HTTP и меньший внешний/дополнительный код. Если вы действительно хотите просто передать значения обратно контроллеру, следуйте тем же примерам, которые вы видели в других местах, но используйте помощник '@ Html.HiddenFor()' вместо текстовых полей/флажков/и т. Д. Это позволит вам возвращать значения POST, но не отображает ничего видимого для пользовательского интерфейса. – Tommy

+0

Как @Tommy подразумевает, вы действительно не хотите отправлять нежелательные данные клиенту. Это пустая трата пропускной способности и потенциальный риск для безопасности. Вы хотите передать уникальный ключ, который представляет модель, и сохранить ее на странице как '@ Html.HiddenFor (x => x.ID)' –

+0

Хмм. Я вижу твои очки. поэтому я думаю, что быстрее и безопаснее просто вызвать базу данных снова в моем новом методе контроллера и регенерировать модель? –

ответ

0

Внутри вашей формы, вы можете сделать это за ценности, которые вы хотите сохранить:

@Html.HiddenFor(model = > model.valueIwant) 

Новый скрытый тег ввода будет добавлен на страницу:

<input type="hidden" name="valueIwant" value="the value"> 

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

+0

Я как бы надеялся избежать этого 99 раз. или один раз для каждого значения в моей модели. Я надеялся, что их модель HiddenFor.ENTIREMODEL или что-то –

+0

Похоже, вы пытаетесь сделать что-то большее в соответствии с веб-формами, чем MVC. webforms поддерживает состояние через обратную передачу, сохраняя ВСЕ данные в виде скрытого поля на странице. Используя MVC, ваш контроллер должен идеально создавать/получать все данные, необходимые для вашего просмотра, по каждому запросу. Поэтому я должен согласиться с @ Томми. Возможно, вам лучше поддерживать идентификатор требуемых данных и получить его на стороне сервера при каждом запросе. В противном случае веб-формы могут быть хорошим вариантом для вас. – Keith

+0

Возможно, размещение данных в сеансе было бы вариантом, а не сохранением его в разметке страницы? – Keith

Смежные вопросы