`[Bind (Exclude =" Password ")]` не работает? - PullRequest
0 голосов
/ 19 мая 2011

Я пытался редактировать страницу пользователя, но я не хочу проверять поле пароля.поэтому я поставил [Bind (Exclude = "Password")] перед моей моделью.но это все еще заставляет modelstate.Isvalid возвращать false.Кто-нибудь может знать, почему это так?

public ActionResult Edit([Bind(Exclude="Password")]User user, string selectedStatus, string password, string confirmPassword)
        {
if(ModelState.Isvalid)<---- returns false
{
///logic
}
}

1 Ответ

0 голосов
/ 19 мая 2011

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

Очевидно, что решение этой проблемы заключается в использовании модели представления (которая, кстати, является решением около 70% вопросов, на которые я отвечаю по SO, связанных с ASP.NET MVC).

Так что, если вам вообще не нужно поле пароля, просто не включайте его в эту модель представления, а если вам нужен пароль, но не требуется проверка, просто не украшайте его Required атрибут.

Так что вместо:

public ActionResult Edit([Bind(Exclude="Password")]User user, string selectedStatus, string password, string confirmPassword)

используйте:

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