MVC 3で流暢な検証を使用しています。コントローラーの特定のポストアクションに対して流暢な検証をオフにすることはできますか?
ありがとう
MVC 3で流暢な検証を使用しています。コントローラーの特定のポストアクションに対して流暢な検証をオフにすることはできますか?
ありがとう
を使用してAttributedValidatorFactory
いて、POST動詞のホームコントローラーでのインデックスアクションの検証を無効にしたい場合は、カスタムバリデーターファクトリを作成できます。
public class MyAttributedValidatorFactory : AttributedValidatorFactory
{
private readonly Func<HttpContextBase> _contextAccessor;
public MyAttributedValidatorFactory(Func<HttpContextBase> contextAccessor)
{
_contextAccessor = contextAccessor;
}
public override IValidator GetValidator(Type type)
{
var context = _contextAccessor();
var rd = context.Request.RequestContext.RouteData;
var action = rd.GetRequiredString("action");
var controller = rd.GetRequiredString("controller");
if (string.Equals("post", context.Request.HttpMethod, StringComparison.OrdinalIgnoreCase) &&
string.Equals("index", action, StringComparison.OrdinalIgnoreCase) &&
string.Equals("home", controller, StringComparison.OrdinalIgnoreCase)
)
if (type == typeof(MyViewModel))
{
return null;
}
return base.GetValidator(type);
}
}
Application_Start
これは、 :のデフォルトのものを置き換えるために使用されます
FluentValidationModelValidatorProvider.Configure(config =>
{
Func<HttpContextBase> contextAccessor =
() => new HttpContextWrapper(HttpContext.Current);
config.ValidatorFactory = new MyAttributedValidatorFactory(contextAccessor);
});
次に、ホームコントローラで次のアクションを実行する場合:
[HttpPost]
public ActionResult Index(MyViewModel model)
{
...
}
FluentValidationは起動しません。
バリデーターのカスタマイズと呼ばれる流暢な検証の重要なポイントを見逃している干し草の男性。
ここで見つけるhttp://fluentvalidation.codeplex.com/wikipage?title=mvc
バリデーターのカスタマイズ
FluentValidation v3では、CustomizeValidatorAttributeを使用して、バリデーターの実行方法を構成できます。たとえば、バリデーターを特定のルールセットに対してのみ実行する場合は、検証されるパラメーターを指定することで、そのルールセット名を指定できます。
public ActionResult Save([CustomizeValidator(RuleSet="MyRuleset")] Customer cust) {
// ...
}
これ