asp.net mvc как сохранить? - PullRequest
0 голосов
/ 13 января 2010

У меня есть следующая модель:

Заказчик:

  • ID

  • Имя

  • Адрес

  • Телефон

  • Факс

Я добавил вид редактирования на основе вышеуказанной модели с контроллера. Я изменил представление «Правка», чтобы разрешить редактирование только в поле «Телефон и факс» (остальные удалили). Когда я отправляю это, я получаю ошибку. Это работает, если я оставляю представление Edit нетронутым (5 полей). Однако я хочу разрешить изменение только в последних 2 полях.

Я заблудился, пожалуйста, помогите. Спасибо:)

Ответы [ 2 ]

2 голосов
/ 13 января 2010

Если вы используете способность MVC для заполнения вашей сущности / класса, т. Е. Ваш символ действия выглядит следующим образом:

ViewResult MyAction(MyObject object) {
  ...
  Save(MyObject);
}

тогда вам нужно убедиться, что вы включили другое поле, недоступное для редактирования, либо в качестве видимой информации, либо с помощью Html.Hidden в области формы, чтобы убедиться, что у вас полностью заполненный объект. Помните, что в Интернете нет состояния, и сервер не знает, какую запись вы редактировали, если у него нет ключей, чтобы сделать это ретроспективно.

Другой вариант - получить исходный объект (для которого вам все еще нужен первичный ключ) из базы данных, обновить поля из данных формы и затем отправить изменения. Нам нужно знать конкретную ошибку, чтобы иметь возможность помочь в дальнейшем, код, который вы используете, также будет очень полезен.

0 голосов
/ 13 января 2010

Не зная больше, я бы предположил, что это как-то связано с привязкой нулевого свойства к ненулевому свойству в вашей модели. Можете ли вы дать мне более подробную информацию о модели, ошибка.

Если вы используете связыватель модели mvc по умолчанию, он будет связывать только те поля, которые вы отправляете. Поэтому отправьте как скрытое или не используйте связыватель модели и вручную сопоставьте переменную из Request.Form с копией модели, которую вы извлекли из базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...