Описание данных RangeAttribute не работает должным образом - PullRequest
1 голос
/ 01 ноября 2010

Я занимаюсь разработкой приложения ASP.NET MVC2, в котором у меня есть класс User со свойством SecurityQuestionID следующим образом:

public class User
{
    [RangeAttribute(1, 5, ErrorMessage = "Security Question is required")]
    [DisplayName("Security Question")]
    public virtual int SecurityQuestionID { get; set; }
}

Поле SecurityQuestionID заполняется из раскрывающегося списка.в представлении следующим образом:

<%: Html.LabelFor(model => model.SecurityQuestionID)%>
<%: Html.DropDownListFor(model => model.SecurityQuestionID, ViewData["securityQuestions"] as SelectList,"Choose a Question",null) %>
<%: Html.ValidationMessageFor(model => model.SecurityQuestionID)%>

Контроллер отправляет вопросы безопасности представлению, используя данные представления следующим образом:

ViewData["securityQuestions"] = new SelectList(_securityQuestionService.GetAll(), "SecurityQuestionID", "Question");

Если я не выбираю вопрос изи нажмите кнопку «Отправить», вместо «Security Question is required» появится сообщение «The Security Question field is required.».Может кто-нибудь помочь мне понять, что я здесь делаю неправильно?

Ответы [ 2 ]

4 голосов
/ 01 ноября 2010

Если целое число не обнуляемо, то оно требуется по умолчанию.Таким образом, проверка диапазона не дает сбоя, но Обязательная проверка не выполняется.
Возможно, вы захотите указать отдельное сообщение об ошибке, когда оно требуется, добавив обязательный атрибут.

[Required(ErrorMessage="Security Question is required")]
2 голосов
/ 01 ноября 2010

Вероятно, это ошибка, потому что это обязательное поле.См. http://forums.asp.net/p/1391688/2977493.aspx. Это согласуется с тем фактом, что рассматриваемое поле определяется как int, а не int?, поэтому оно не может принимать значение null.

Вдругими словами, он не попадает в ваш валидатор диапазона.

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