2016-04-15 6 views
0

現在、MVC4のWebサイトでjqueryの検証を実装しようとしています。新しいテキスト入力後にモデルステートエラーをビューから削除する

私は、ユーザー名がmodel.Usernameテキストボックスに記入thatsの場合はエラーを与え、私のHTTP POSTのにModelStateが存在しないコメントを追加しました:

ModelState.AddModelError("UsernameNull", "Username does not exist"); 

そして、私の見解でEditorFor &検証メッセージ:

@Html.LabelFor(model => model.Username, "Username:") 
@Html.EditorFor(model => model.Username) 

<div class="error-container"> 
@Html.ValidationMessage("UsernameNull", null, new { @class = "error-container-error" }) 
</div> 

投稿後に「ユーザー名が存在しません」というエラーが正常に表示されますが、エラーはビューページに残ります。私が達成したいのは、新しい入力がmodel.Usernameテキストボックスに入力されたときにエラーが消えてしまうことです。

+0

カスタムModelStateエラーでは、自分で値をテストするためにJavaScriptを作成し、エラーを自分で削除する必要があります。 – krillgar

+0

まず、プロパティ名と一致するには 'ModelState.AddModelError(" Username "、" Username does not exist ");および@Html.ValidationMessage(" Username ")'が必要です。 'name =" UsernameNull "で入力がないので、エラーメッセージを取り除くために' jquery.validate.js'で処理できる '.keyup()'イベントの '.blur()'はありません。しかしこれは '[Remote]'属性を使ってはるかに優れています。 [方法:ASP.NET MVCでリモート検証を実装する](https://msdn.microsoft.com/en-us/library/gg508808(VS.98).aspx) –

答えて

0

データアノテーションバリデーターを利用することをお勧めします。これにより、クラスプロパティに1つ以上の属性を追加するだけで検証を実行できます。

using System.ComponentModel.DataAnnotations; 

namespace MvcApplication.Models 
{ 
    public class MyModel 
    { 
     [Required(ErrorMessage = "User name is required")] 
     [DisplayName("User Name")] 
     public string UserName { get; set; } 
    }  
} 

モデル状態がエラー

[HttpPost] 
public ActionResult MyAction(MyModel model){ 
    if(!ModelState.IsValid) 
     return View(); 

    // Insert logic here 
    //return RedirectToAction("Index"); 
} 

が最後にあなたのビューであなたはPOSTしようとした場合

<div class="error-container"> 
    @Html.ValidationMessage("UserName", "*", new { @class = "error-container-error" }) 
</div> 

を使用することができるはず含まれている場合は、次のコントローラのアクションは、ビューを再表示フォームにUserNameテキストボックスが空の場合、クラスに定義されている検証メッセージが表示されます。

関連する問題