मैं सफलतापूर्वक मेरी WebAPI परियोजना नियंत्रक है कि केवल एक HttpGet विधि था में FluentValidation कार्यान्वित का उपयोग करना। जब मैंने एक और HttpGet विधि जोड़ा, तो मैंने दोनों तरीकों से मार्ग विशेषता जोड़ा। यानी [मार्ग ("विधि 1")] और [मार्ग ("विधि 2")]।FluentValidation काम नहीं करता जब WebAPI [रूट] गुण
अब ModelState कि क्या मैं किसी भी डेटा दर्ज हो या नहीं वापस सच के रूप में आता है।
मेरा कोड यहां है।
WebApiConfig
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new ValidateModelStateFilter());
//FluentValidation
FluentValidationModelValidatorProvider.Configure(config);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{action}/{id}",
defaults: new { controller = "Menu", id = RouteParameter.Optional}
);
}
}
ValidateModelStateFilter
public class ValidateModelStateFilter : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);
}
}
}
नियंत्रक
[HttpGet]
[Route("Method1")]
public IHttpActionResult ReadAllMenusByApplication([FromUri] ReadAllMenusByApplicationInput input)
{
var result = new List<ApplicationMenu>();
...
}
इनपुट वस्तु
using FluentValidation;
using FluentValidation.Attributes;
namespace MenuService.Models
{
[Validator(typeof(ReadAllMenusByApplicationInputValidator))]
public class ReadAllMenusByApplicationInput
{
public ReadAllMenusByApplicationInput() {
this.ApplicationName = string.Empty;
}
/// <summary>
/// The MenuSystem name of the application
/// </summary>
public string ApplicationName { get; set; }
}
public class ReadAllMenusByApplicationInputValidator : AbstractValidator<ReadAllMenusByApplicationInput>
{
public ReadAllMenusByApplicationInputValidator()
{
RuleFor(x => x.ApplicationName).NotEmpty();
}
}
}
दोनों मार्गों के साथ नियंत्रक दिखाएं और अनुरोध के नमूने को भी नमूना दिखाएं। – Nkosi