Как определить, изменилось ли поле формы, не используя скрытое поле - PullRequest
1 голос
/ 26 апреля 2011

Я использую ASP.NET MVC 3 и мне необходимо определить, было ли изменено поле формы на стороне сервера. Я знаю об использовании трюков со скрытыми полями, но мне было интересно, есть ли способ сделать это, просто используя API?

По сути, у меня есть экран редактирования для моей модели, и одно из полей является необязательным идентификатором, который можно указать. Если поле указано, я должен убедиться, что оно уникально (нет ни у одной другой модели). Поэтому на контроллере редактирования я хочу запустить проверку, но только если это поле было изменено.

Обратите внимание, мне не нужно знать предыдущее значение по сравнению с новым значением, только если значение поля изменилось.

Ответы [ 2 ]

4 голосов
/ 27 апреля 2011

Действительно, «грязного» флага не существует - MVC на самом деле ближе к тому, «как работает веб», чтобы повторно использовать это утверждение.Все, что отправлено, это пары имя-значение.ничего больше.Механизм связывания моделей MVC просто сопоставляет эти имена с вашим объектом - поэтому для того, чтобы действительно обнаружить изменение, вы должны либо проверить подлинность источника данных после публикации, либо сравнить значения, переданные в форме - в этом случае - лучше всего хешировать, чтобыизбегать подделок.

4 голосов
/ 26 апреля 2011

Вам нужно будет где-то сохранить копию старого значения и провести сравнение. Вы можете сохранить его в своей модели просмотра.

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