私はMVC 3 +邪魔にならない検証を使用しています。.NET MVC 3モデルステートのエラーを繰り返し、ModelStateを強制する方法。特定のエラーを有効または無効にしますか?
一部のフィールドでは、リモート検証も使用しています。リモートの検証では、エラーを返すか、の警告だけを返します。(エラーをブロックするだけでなく、警告を与えるためにAjax検証を利用したいと思います)。 説明文の中に "Info"という接頭辞が付いた検証エラーによる警告を区別しました。
したがって、すべての検証エラーを繰り返し、表示された警告だけを表示し、表示されたテキストに従ってエラーをオフにする方法は存在しますか?
私は
はここで、私のリモート検証ルーチンのエキスです... ActionFilterAttributeを使用して、またはサイクリングの後、真ModelState.Valid =を強制するために、すべての検証エラーをチェックすることを考えていました。 WarningCheck属性:
[WarningCheck]
public JsonResult CheckMyField(string myfield)
{
//....some check...if ok I do `return Json(true, JsonRequestBehavior.AllowGet);`
//...if just a warning, I do the follow...
string warn = String.Format(CultureInfo.InvariantCulture,
"Info: some info....");
ModelState.AddModelError(TicketHD, esiste);
return Json(warn, JsonRequestBehavior.AllowGet);
}
[AttributeUsage(AttributeTargets.All)]
public class WarningCheckAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//.... here I'd like to cycle my warnings and if possible maintaining just the text display and set errors off...is it possible?
}
}
EDIT(特定の警告のためのクライアント側の検証を無効にする方法)
@CDSmith(@Alfalfastrange)のサーバー側の提案に続いて、特定のテキストが各検証エラーの中に含まれている場合、クライアント側の検証も無効にします。特に、私の必要性は、エラーが "Info:"テキストを含んでいたときだけ、クライアント&サーバ側の検証エラーを無効にすることでした。ここ は、私は、クライアント側の動作のために使用していたコードです:
....
$("#ticketfrm").submit();
var isvalid = true;
var errmark = $("#ticketfrm .field-validation-error span");
$(errmark).each(function() {
var tst = $(this).text();
if (!(tst.indexOf("Info") != -1))
isvalid = false; //if the val error is not a warn, the it must be a real error!
});
if (isvalid) {
var form = $('#ticketfrm').get(0); //because I'm inside a jquery dialog
$.removeData(form, 'validator');
jQuery('#ticketfrm').unbind('submit').submit();
}
$("#ticketfrm").submit();
}
.....
私はこれが多くの人々を助けるかもしれない...私はこの作業を取得するために多くの時間を働いていた願っています!私はそれがよりエレガントな解決策でなければならないとは思わないが、ITは機能する! :) サーバー側の検証では、表示されている解決策をお読みください。
これが便利な場合は、マークを付けてください。ありがとうございました!
THX @CDスミス。あなたが正しい。私は "ModelStateのエラーを処理してエラーのテキスト値を維持しますが、エラーとして表示しない"ようにループしたいのですが...いくつかのエラーのためだけにしたいと思います。特に、私はテキスト内の文字列 "Info"を除いてすべてのエラーをmaintaingしたいと思います...可能ですか? 私の詳細に基づいて、より具体的な回答をしてください。 ありがとうございます。 – Larry
ああ、はい、今何を意味するか分かります。私は答えを更新します –
私は私の答えを更新しました。それを見て、あなたの考えを見てください。 –