Проверка текстового поля в MVC2 - PullRequest
1 голос
/ 02 февраля 2010

Я добавил атрибут Обязательный к одному из моих свойств класса Model следующим образом -

[Required(ErrorMessage="UserID should not be blank")]
[DisplayName("User Name")]
public string UserName { get; set; }

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

 <%= Html.TextBoxFor(model => Model.UserName, new { @class = "login-input",       @name="UserName" })%>
 <%= Html.ValidationMessageFor(model => Model.UserName)%>

Но когда я запускаю это приложение и запускаю сообщение (используя нажатие кнопки), не вводя ничего в текстовое поле; Я не получил проверенное текстовое поле?

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

Спасибо заранее, капс

Ответы [ 6 ]

1 голос
/ 05 октября 2010

не забудьте включить MicrosoftMvcValidation.js MicrosoftAjax.js на вашей главной странице.

И как уже упоминалось в логике Рашми, используйте привязку модели для проверки работоспособности.

[HttpPost] public ActionResult AddUser (Пользователь) {
... }

1 голос
/ 05 октября 2010

Это будет работать, только если метод Action HttpPost принимает класс (который содержит свойство UserName) в качестве одного из своих входных параметров.

Итак, если ваш код выглядит примерно так:

public class User
{
  public User() { } // Make sure the class has an empty constructor

  [Required(AllowEmptyStrings = false, ErrorMessage="UserID should not be blank")] 
  [DisplayName("User Name")] 
  public string UserName { get; set; } 
}

Тогда следующий метод действия будет проверять имя пользователя:

[HttpPost]
public ActionResult AddUser(User user)
{ 
  ...
}

Если ваш метод действия похож на этот, он НЕ будет учитывать ваши атрибуты проверки:

[HttpPost]
public ActionResult AddUser(string userName)
{ 
  ...
}

Кроме того, model => Model.UserName или model => model.UserName не имеет значения.

1 голос
/ 02 февраля 2010

изменить модель => Модель . Имя пользователя для модели => Модель . Имя пользователя

0 голосов
/ 02 февраля 2010

Я не упомянул, что метод post получает formcollection как параметр. Я заменил это классом, содержащим свойство. Проблема решается. Извинения.

0 голосов
/ 02 февраля 2010
0 голосов
/ 02 февраля 2010

Попробуйте удалить '@ name = "UserName" из вашего Html.TextBoxFor

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