Проверка MVC4 для выбора значения параметра

Я новичок в технологии MVC, у меня есть приложение MVC 4, и я пытаюсь отобразить проверку для выбора ввода (месяц и год). Я сделал проверку для ввода type="text", у меня все работает нормально. Мне нужна помощь для выбора варианта. Пожалуйста, помогите с этим?

Вид:

        <li>
            <div class="requiredField">@Html.LabelFor(m => m.AccountNumber)<span>* </span>
            </div>
            @Html.TextBoxFor(m => m.AccountNumber, new {@class ="requiredTextBox" })
            <div class="swipeLink">
                @Html.ActionLink("Swipe", "Swipe", "Transaction", new { @class = "swipePopupLink" })
            </div>
        </li>
        <li>
            <div class="requiredField">@Html.Label("Expiration Date")<span>* </span></div>  
            <div class="ExpirationMonthYear">
                @Html.DropDownList("ExpirationMonth", new SelectList(Model.ExpirationMonth, "Value", "Text", 0), new { @class = "requiredTextBox" })
                @Html.DropDownList("ExpirationYear", new SelectList(Model.ExpirationYear, "Value", "Text", 0), new { @class = "requiredTextBox" })
            </div>
        </li>
@Html.ValidationSummary()

           <script src='@Url.Content("~/Scripts/jquery-1.6.2.js")' type="text/javascript">
           </script>
           <script src='@Url.Content("~/Scripts/jquery.validate.min.js")' 
           type="text/javascript"></script>
           <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" 
           type="text/javascript"></script>
           <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"  
           type="text/javascript"></script>

Вид модели:

    [Required]
    [Display(Name = "Account Number")]
    public string AccountNumber { get; set; }

    [Required]        
    [Display(Name = "Expiration Date")]
    public IEnumerable<SelectListItem> ExpirationMonth { get; set; }

    [Required]
    public IEnumerable<SelectListItem> ExpirationYear { get; set; }

заранее благодарю за вашу поддержку


person ssiva    schedule 18.10.2012    source источник


Ответы (1)


Для Drop Down вам нужно связать еще одно свойство, чтобы проверить вашу проверку

The ModelView 



 [Required]
        [Display(Name = "Account Number")]
        public string AccountNumber { get; set; }


        [Display(Name = "Expiration Date")]
        public IEnumerable<SelectListItem> ExpirationMonth { get; set; }


        public IEnumerable<SelectListItem> ExpirationYear { get; set; }

        //New property 
        [RegularExpression(@"^[^0]*$", ErrorMessage = "Select Month.")]
        public int ExpMonth{get;set;}

        [RegularExpression(@"^[^0]*$", ErrorMessage = "Select Year.")]
        public int ExpYear {get;set;}

Вид

<li>
        <div class="requiredField">@Html.LabelFor(m => m.AccountNumber)<span>* </span>
        </div>
        @Html.TextBoxFor(m => m.AccountNumber, new {@class ="requiredTextBox" })
        <div class="swipeLink">
            @Html.ActionLink("Swipe", "Swipe", "Transaction", new { @class = "swipePopupLink" })
        </div>
    </li>
    <li>
        <div class="requiredField">@Html.Label("Expiration Date")<span>* </span></div>  
        <div class="ExpirationMonthYear">
            @Html.DropDownListFor(model=>model.ExpMonth, new SelectList(Model.ExpirationMonth, "Value", "Text", 0), new { @class = "requiredTextBox" })
            @Html.DropDownListFor(model=>model.ExpYear, new SelectList(Model.ExpirationYear, "Value", "Text", 0), new { @class = "requiredTextBox" })
        </div>
    </li>

ПРИМЕЧАНИЕ. В приведенном выше примере я взял тип данных int, если он неправильный, выберите другой в соответствии с вашей ситуацией, а затем примените проверку.

person Shivkumar    schedule 18.10.2012
comment
Спасибо за ваш пост. Я добавил этот код после того, как получил эту ошибку: «Уже содержит определение для ExpirationMonth и уже содержит определение для ExpirationYear. Вы можете помочь в этом? Найдите путь: dropbox.com/s/lu1j40er8el3jz8/error.png - person ssiva; 18.10.2012
comment
Теперь эти ошибки устранены. Но не получил огня для проверки. Подробнее о модели представления: dropbox.com/s/ lu1j40er8el3jz8/error.png пожалуйста, поддержите меня в этом. - person ssiva; 18.10.2012
comment
Я отредактировал свой пост, у вас есть первый элемент в раскрывающемся списке, выбранный с помощью select = true, поэтому вместо этого с помощью атрибута [Required] вы должны использовать регулярное выражение, чтобы проверить, является ли выбранное значение в раскрывающемся списке нулем или нет. У меня есть добавленное выражение проверить на ноль. - person Shivkumar; 18.10.2012
comment
dropbox.com/s/e7hz6k3phohgbms/error_1.png Я снова добавил ваш точный код. Теперь я получаю эту ошибку. Не могли бы вы попробовать f? - person ssiva; 18.10.2012
comment
@ssiva Я прошу прощения за использование DropDownFor вместо DropDown, поскольку вы сильно связываете его с ViewModel, я изменил его в своем посте .. - person Shivkumar; 18.10.2012
comment
Большое спасибо за вашу помощь ... Вы сэкономили мое время, даже если я потратил много на это ... Большое спасибо .... - person ssiva; 18.10.2012