は非常に良いポストとASP.NET MVCで検証を実装する方法の説明がたくさんありますが、私はこれらの1好む:
しかし、私は本当にjQuery $ .ajaxメソッドを使ってActionMethodsを呼びたいと思います。私が$ .ajaxを使用したい理由の1つは、$ .ajax呼び出しを介してページに動的に(エンティティ作成のためのフォームでも)たくさんの部分ビューがロードされ、私は動的に読み込まれたすべてのコンテンツを失います。
問題をよりよく理解するために、コントローラアクションを呼び出してクライアントjqueryコードで応答を処理する方法を説明する簡単なコードを投稿します。
コントローラがActionMethod:
public ActionResult CreateCustomer(string name, string accountNumber)
{
try
{
CustomerService.InsertCustomer(name, accountNumber);
return Json(new ActionInfo()
{
Success = true,
Message = "Customer Is Successfully Created"
});
}
catch (Exception ex)
{
return Json(new ActionInfo()
{
Success = false,
Message = ex.Message
});
}
}
を呼び出すと、クライアントコードでの取り扱い:
$.ajax({
type: "POST",
url: $form.attr('action'),// /MyController/CreateCustomer
data: $form.serialize(),
error: HandleUnespectedError,
dataType: "json",
success: function(response) {
if (response.Success)
alert("Success: " + response.Message);
else
alert("Error: " + response.Message);
}});
は私が必要とするように動作するようにこれらの検証フレームワークの一部を作るための良い方法はありますか? ActionInfoに検証エラーを追加してクライアントで処理できることは知っていますが、それはすでに私の1つの検証のビルドになると私は信じています。
こんにちは!努力のためにたくさんありがとう:)私は結束のためのCustomerエンティティ(あなたが単純なパラメータでメソッドを置いていた理由は分かりませんでした)と確実に例外処理のためにあなたに完全に同意します。 xValを使用すると、クライアントの検証を簡単に実装することができます。もし誰かがそれを避けるなら、私はそれを実際に捕捉します。しかし、その場合フィールドの隣に検証メッセージをどのように表示するのですか? –
そのためには、コントローラアクションからJSONではなく部分的なビューを返すことをお勧めします。部分ビューでは、Html.ValidationMessage()ヘルパーメソッドを使用して、各フィールドのエラーメッセージを表示します。 Data Annotations属性によって生成されたフィールドレベルのエラーメッセージは、 'ModelState'プロパティを介してコントローラで利用できます。たとえば、nameというフィールドの最初のエラーメッセージを取得するには、 'ModelState [" Name "]。Errors [0] .ErrorMessage'で取得します。また、 'Ajax.BeginForm'メソッドを見てください。私は過去に大きな成功を収めてきました。 –
これは私が実現したことですが、JSONを部分ビューで返すか、それは好きではないことです...しかし、Ajaxの機能を組み込んだMSを使って対処する方法を見ていきます。私の願いは、それを回避することでした:)ありがとう –