2016-07-01 19 views
0

私はAsp.net MVCを使用しています。ノックアウトを使用してフォーム送信時にすべての入力フィールドを検証する必要があります。ASP.NET MVC 4ノックアウトあり

私のビューは以下のとおりです。ノックアウトを使用して検証を適用する方法。私は各分野ごとにObservableを適用したくありません。

Form   Code

<div data-bind="with:Student"> 
    <form method="post" action="/Home/Save"> 
    <div> 
     <label>Name</label> 
     <input type="text" id="txtName" name="Name" data-bind="value:Name" /> 
    </div> 

    <div> 
     <label>Age</label> 
     <input type="text" id="txtAge" name="Age" data-bind="value:Age" /> 
    </div> 
    <div> 
     <label>DOB</label> 
     <input type="text" id="txtDOB" name="Age" data-bind="value:DOB" /> 
    </div> 

    <div> 
     <label>Street Name</label> 
     <input type="text" id="txtStreetName" name="StreetName" data-bind="value:StreetName" /> 
    </div> 
    <div> 
     <label>Address</label> 
     <input type="text" id="txtAddress" name="Address" data-bind="value:Address" /> 
    </div> 

    <div> 
     <label>City</label> 
     <input type="text" id="txtCity" name="City" data-bind="value:City" /> 
    </div> 
    <div> 
     <label>State</label> 
     <input type="text" id="txtState" name="State" data-bind="value:State" /> 
    </div> 
    <div> 
     <label>Country</label> 
     <input type="text" id="txtCountry" name="Country" data-bind="value:Country" /> 
    </div> 
    <div> 
     <label>Email</label> 
     <input type="text" id="txtEmail" name="Email" data-bind="value:Email" /> 
    </div> 
    <div> 
     <label>Mobile</label> 
     <input type="text" id="txtMobile" name="Mobile" data-bind="value:Mobile" /> 
    </div> 
    <button data-bind="click: submit">Submit</button> 
    </form> 
</div> 
+0

(a)イメージの代わりにテキストとしてコードを共有してください。(b)あなたが既に試したことと何がうまくいかなかったかを示してください。 – user3297291

+0

@ user3297291コードを見つけてください。私はすべてのフィールドを検証したい。そして、ほとんど私はジェネリック型にする必要があるので、私は他のページのために実装することができます – Avi

答えて

0

あなたはASP.NET MVCを使用している場合は、なぜあなたは、モデルからすべてのデータを引っ張っていませんか?

モデルを作成する場合は、右欄の宣言に検証を追加することができますが:

using System.ComponentModel.DataAnnotations; 

namespace YourProject.Models { 

    public class ModelName { 

     [Required(ErrorMessage = "Please enter your name")] 
     public string Name { get; set; } 

     [Required(ErrorMessage = "Please enter your Age")] 
     public string Age { get; set; } 

     [Required(ErrorMessage = "Please enter your DOB")] 
     public string DOB { get; set; } 

     [Required(ErrorMessage = "Please enter your Street Name")] 
     public string STreetName { get; set; } 

     [Required(ErrorMessage = "Please enter your Address")] 
     public string Address { get; set; } 

     [Required(ErrorMessage = "Please enter your City")] 
     public string City { get; set; } 

     [Required(ErrorMessage = "Please enter your State")] 
     public string State { get; set; } 

     [Required(ErrorMessage = "Please enter your Country")] 
     public string Country { get; set; } 

     [Required(ErrorMessage = "Please enter your Email")] 
     [RegularExpression(".+\\@.+\\..+", ErrorMessage="Enter Valid Email")] 
     public string Email { get; set; } 

     [Required(ErrorMessage = "Please enter your Mobile")] 
     public string Mobile { get; set; } 
    } 
} 

あなたはいくつかの研究を行う場合は、に制限するように、あなたがデータをこのように検証することができ、他の方法を、見つけることができます特定の長さまたは特定の種類の文字。検証の面で他に何が必要なのか分かりませんが、これは確かに役に立ちます。また、コントローラを介してモデルをビューに渡すためのMVCの基礎知識があると仮定しています。

+0

私はこのモデルバリデーションを既に知っていますが、私はC#End(data Annotation)には適用したくありません。私はスクリプト側(クライアント)ですべてを適用する必要があります。あなたの提案をありがとう – Avi

0

githubのthisノックアウト検証ライブラリをご覧ください。使いやすい。検証を追加するオブザーバブルを単に拡張するだけです。 HTML5検証属性をビューで使用することもできます。

+0

私はすでにこれを見て、適用しました。私は、これをこのExtendメソッドに、スクリプト側で汎用型にしたいと考えています。私は多くのフォームを使用しているので、ジェネリック型の検証であれば簡単です。 – Avi

+0

「ジェネリック」とは何を意味するのかよく分かりません。クライアントまたはサーバー上の検証の適用には、常に作業が必要です。私の推奨は、ノックアウト検証文書に示されているようにhtml属性を使用することです。これはあなたの仕事のほとんどを必要としません。例えば 他の何かを見て[ノックアウト検証ルールエンジン](https://github.com/ctoestreich/knockout-validation-rule-engine)ライブラリです。免責事項:私はそれを自分で使ったことはありません:) –