2016-09-29 2 views
1

Мне нужно выполнить проверку на текстовое поле и выпадающее меню, которое запускается только тогда, когда оба значения пустые и ничего не делает, когда одно из значений пуст. Как мне это реализовать? Нужно ли создавать пользовательский валидатор? Ниже моя модель и просмотр МодельASP MVC Validation

public class CustomValidators 
{ 
    [Required] 
    [Required(ErrorMessage = "State Required")] 
    public string drpStateId { set; get; } 

    public System.Web.Mvc.SelectList drpState { set; get; } 
    [Required(ErrorMessage ="Region Required")] 
    public string txtRegion { set; get; } 
} 

Посмотреть

@model InterviewTest.Models.CustomValidators 

@{ 
    ViewBag.Title = "Custom Validator"; 
    Layout = "~/Views/_Layout.cshtml"; 
} 

<p>@Html.ActionLink("< Back", "Index")</p> 

@using (Html.BeginForm("CustomValidatorPost")) 
{ 
    @Html.ValidationSummary() 
    <div class="container-fluid"> 
     <div class="row"> 
      <div class="col-sm-3"> 
       <div class="form-group"> 
        @Html.DropDownListFor(c => c.drpStateId, Model.drpState, "", new { @class = "form-control" }) 
       </div> 
      </div> 

      <div class="col-sm-6"> 
       <div class="form-group"> 
        @Html.TextBoxFor(x => Model.txtRegion, new { @class = "form-control" }) 
        @*<input type="text" id="txtRegion" name="txtRegion" class="form-control" />*@ 
       </div> 
      </div> 

      <div class="col-sm-3"> 
       <button type="submit" name="btnSubmit" id="btnSubmit" class="btn btn-default">Submit</button> 
      </div> 
     </div> 
    </div> 
} 
+1

Рассмотрим атрибут [foolproof] (http://foolproof.codeplex.com/) '[RequiredIfNotEmpty (" drpStateId ")]', применяемый к вашему 'txtRegio n' (и аналогично применяется к свойству 'drpStateId' и удаляет оба атрибута' [Обязательные] ') –

+0

@StephenMuecke, когда я пытался, чтобы представление работало, когда оба пуста. – aj12

+1

Извините, неправильно поняли ваши требования. Для этого вам нужно будет написать собственный собственный атрибут проверки - [Полное руководство для проверки в ASP.NET MVC 3 - часть 2] (http://www.devtrends.co.uk/blog/the-complete- руководства к валидации-в-asp.net-MVC-3-часть-2) –

ответ

0

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

Вы можете создать функцию JavaScript и запустить ее в режиме обмена в обоих текстовых полях и внутри нее проверить значения, и если оба они пустые, покажите сообщение об ошибке и не представите форму, вы можете достичь этого, используя Проверка JQuery, добавив специальный валидатор, см. Эту ссылку для получения дополнительной информации. https://jqueryvalidation.org/jQuery.validator.addMethod/

На стороне сервера вы можете сделать простую инструкцию if в действии контроллера, чтобы проверить, что оба значения не пусты, и если оба они пусты, тогда добавьте ошибку в ModelState