2016-09-29 21 views
1

テキストボックスで検証を実行する必要があります。また、両方の値が空の場合にのみトリガーとなり、値の1つが空の場合は何もしません。どのように私はそれを実装するだろうか?カスタムバリデータを作成する必要はありますか?以下は私のモデルとビュー モデルであるASP MVC検証

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; } 
} 

ビュー比較バリ以外の2つのフィールド上で動作ボックスの検証のないうちはありません

@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

あなたの 'txtRegio 'に適用される[foolproof](http://foolproof.codeplex.com/)' [RequiredIfNotEmpty( "drpStateId")]属性を考えてみましょう。 @dropstateId'プロパティに適用され、 '[必須]'属性を削除します。 –

+0

@StephenMuecke両方が空の場合にサブミットが動作するようにしたときに、 – aj12

+1

あなたの要件を誤解しています。そのためには、独自のカスタム検証属性([ASP.NET MVC 3での検証の完全ガイド - 第2部])を作成する必要があります(http://www.devtrends.co.uk/blog/the-complete- guide-to-validation-in-asp.net-mvc-3-part-2) –

答えて

0

、あなたのケースでそうカスタム検証を作成する必要があります。

JavaScript関数を作成し、2つのテキストボックスの両方でonchangeで呼び出すことができます。値を確認し、両方が空の場合は、エラーメッセージを表示してフォームが送信されないようにします。カスタムバリデータを追加してJQueryの検証を行います。詳細については、このリンクを参照してください。https://jqueryvalidation.org/jQuery.validator.addMethod/

サーバ側では、コントローラのアクションで単純なif文を実行して、両方の値が空でないことを検証し、 ModelState