{"id":21706688,"url":"https://github.com/ogulcanturan/ogu.fluentvalidation.aspnetcore.attribute","last_synced_at":"2026-02-16T20:34:10.396Z","repository":{"id":182114213,"uuid":"667876356","full_name":"ogulcanturan/Ogu.FluentValidation.AspNetCore.Attribute","owner":"ogulcanturan","description":"This library extends FluentValidation with additional attributes to simplify validation in ASP.NET Core applications","archived":false,"fork":false,"pushed_at":"2025-03-20T20:57:51.000Z","size":64,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-09T20:56:36.850Z","etag":null,"topics":["asp-net-core","fluent-validation"],"latest_commit_sha":null,"homepage":"https://www.nuget.org/packages/Ogu.FluentValidation.AspNetCore.Attribute","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ogulcanturan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-07-18T13:55:22.000Z","updated_at":"2025-03-20T20:57:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"9cc83c72-181b-4c9a-adf4-e7f982b53c67","html_url":"https://github.com/ogulcanturan/Ogu.FluentValidation.AspNetCore.Attribute","commit_stats":null,"previous_names":["ogulcanturan/fluentvalidation.aspnetcore.attribute"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ogulcanturan/Ogu.FluentValidation.AspNetCore.Attribute","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ogulcanturan%2FOgu.FluentValidation.AspNetCore.Attribute","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ogulcanturan%2FOgu.FluentValidation.AspNetCore.Attribute/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ogulcanturan%2FOgu.FluentValidation.AspNetCore.Attribute/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ogulcanturan%2FOgu.FluentValidation.AspNetCore.Attribute/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ogulcanturan","download_url":"https://codeload.github.com/ogulcanturan/Ogu.FluentValidation.AspNetCore.Attribute/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ogulcanturan%2FOgu.FluentValidation.AspNetCore.Attribute/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29517613,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T18:37:19.720Z","status":"ssl_error","status_checked_at":"2026-02-16T18:36:46.920Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asp-net-core","fluent-validation"],"created_at":"2024-11-25T22:14:07.580Z","updated_at":"2026-02-16T20:34:10.378Z","avatar_url":"https://github.com/ogulcanturan.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"logo/ogu-logo.png\" alt=\"Header\" width=\"24\"/\u003e Ogu.FluentValidation.AspNetCore.Attribute\n\n[![.NET](https://github.com/ogulcanturan/Ogu.FluentValidation.AspNetCore.Attribute/actions/workflows/dotnet.yml/badge.svg?branch=master)](https://github.com/ogulcanturan/Ogu.FluentValidation.AspNetCore.Attribute/actions/workflows/dotnet.yml)\n[![NuGet](https://img.shields.io/nuget/v/Ogu.FluentValidation.AspNetCore.Attribute.svg?color=1ecf18)](https://nuget.org/packages/Ogu.FluentValidation.AspNetCore.Attribute)\n[![Nuget](https://img.shields.io/nuget/dt/Ogu.FluentValidation.AspNetCore.Attribute.svg?logo=nuget)](https://nuget.org/packages/Ogu.FluentValidation.AspNetCore.Attribute)\n\n## Introduction\n\nOgu.FluentValidation.AspNetCore.Attribute is a library that extends [FluentValidation](https://github.com/FluentValidation/FluentValidation) with additional attributes to simplify validation in ASP.NET Core applications. It allows you to specify validation rules directly on the model properties using attributes, reducing the need for explicit validation logic in your controllers.\n\n## Features\n\n- Supports validation rules through attributes on model properties.\n- Provides `[Validate]` and `[ValidateAsync]` attribute to automatically validate model objects in controller actions. To escape validation `[SkipValidate]` attribute can be used.\n- Provides `IInvalidValidationResponse` interface for controlling invalid validation responses.\n- Built on top of FluentValidation, so you still have the full power and flexibility of FluentValidation for more complex validation scenarios.\n\n## Installation\n\nYou can install the library via NuGet Package Manager:\n\n```bash\ndotnet add package Ogu.FluentValidation.AspNetCore.Attribute\n```\n## Usage\n\n**Controller:**\n```csharp\n[HttpPost]\n[Validate(typeof(UserModel))]\npublic IActionResult Post([FromBody]UserModel userModel)\n{\n    ...\n}\n```\n\n**Startup:**\n```csharp\npublic void ConfigureServices(IServiceCollection services)\n{\n    ...\n    services.AddScoped\u003cIValidator\u003cUserModel\u003e, UserModelValidator\u003e();\n    ...\n}\n```\n\n**UserModelValidator:**\n```csharp\npublic class UserModelValidator : AbstractValidator\u003cUserModel\u003e\n{\n    public UserModelValidator()\n    {\n        RuleFor(u =\u003e u.Username).NotEmpty();\n    }\n}\n```\n\n**(optional):**\nYou may customize validation failure response by using default implemented `[IInvalidValidationResponse]` interface \n```csharp\npublic void ConfigureServices(IServiceCollection services)\n{\n    ...\n    services.AddInvalidValidationResponse(failures =\u003e BadRequest(failures));\n    ...\n}\n```\n\nOr you can implement `[IInvalidValidationResponse]` interface\n```csharp\npublic class MyCustomizedInvalidValidationResponse : IInvalidValidationResponse\n{\n    public IActionResult GetResult(object model, List\u003cValidationFailure\u003e validationFailures)\n    {\n        return new BadRequestObjectResult(validationFailures);\n    }\n\n    public async Task\u003cIActionResult\u003e GetResultAsync(object model, List\u003cValidationFailure\u003e validationFailures,\n        CancellationToken cancellationToken = default)\n    {\n        return await Task.FromResult(new BadRequestObjectResult(validationFailures));\n    }\n}\n```\n```csharp\npublic void ConfigureServices(IServiceCollection services)\n{\n    ...\n    services.AddSingleton\u003cIInvalidValidationResponse, MyCustomizedInvalidValidationResponse\u003e();\n    ...\n}\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fogulcanturan%2Fogu.fluentvalidation.aspnetcore.attribute","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fogulcanturan%2Fogu.fluentvalidation.aspnetcore.attribute","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fogulcanturan%2Fogu.fluentvalidation.aspnetcore.attribute/lists"}