2010-01-13 3 views
0

У меня есть следующие модели:asp.net mvc как сэкономить?

Заказчик:

  • ID

  • Имя

  • Адрес

  • Телефон

  • Факс

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

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

+0

Укажите тип полей в вашей модели, а также сообщение об ошибке, которое вы получаете. –

+0

Hi :) ID = int, имя + адрес + телефон + факс = nvarchar Еще раз спасибо – noobplusplus

ответ

2

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

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

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

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

+0

Спасибо Lazarus! Используется Html.Hidden, как предлагается. – noobplusplus

+1

вместо скрытых значений передает идентификатор модели в URL-адресе, например/controller/action/id. затем обновите отсутствующие свойства и идентификатор модели в методе действий, прежде чем передавать его в метод обновления/уровень обслуживания/репозиторий. Сохраняет очищающее средство View View – Mark

0

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

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

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