{"id":27879519,"url":"https://github.com/finbuckle/finbuckle.html5validation","last_synced_at":"2025-07-02T21:06:38.563Z","repository":{"id":245386508,"uuid":"818096060","full_name":"Finbuckle/Finbuckle.Html5Validation","owner":"Finbuckle","description":"Standard HTML5 Validation for ASP.NET Core.","archived":false,"fork":false,"pushed_at":"2025-05-14T05:07:04.000Z","size":37,"stargazers_count":17,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-30T08:18:34.386Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Finbuckle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":"FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["finbuckle"]}},"created_at":"2024-06-21T05:11:39.000Z","updated_at":"2025-06-05T01:28:30.000Z","dependencies_parsed_at":"2024-06-21T23:23:55.012Z","dependency_job_id":null,"html_url":"https://github.com/Finbuckle/Finbuckle.Html5Validation","commit_stats":null,"previous_names":["finbuckle/finbuckle.html5validation"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Finbuckle/Finbuckle.Html5Validation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Finbuckle%2FFinbuckle.Html5Validation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Finbuckle%2FFinbuckle.Html5Validation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Finbuckle%2FFinbuckle.Html5Validation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Finbuckle%2FFinbuckle.Html5Validation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Finbuckle","download_url":"https://codeload.github.com/Finbuckle/Finbuckle.Html5Validation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Finbuckle%2FFinbuckle.Html5Validation/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263215286,"owners_count":23431894,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2025-05-05T03:22:38.199Z","updated_at":"2025-07-02T21:06:33.543Z","avatar_url":"https://github.com/Finbuckle.png","language":"C#","funding_links":["https://github.com/sponsors/finbuckle"],"categories":[],"sub_categories":[],"readme":"# Finbuckle.Html5Validation\n\n1. [Introduction](#introduction)\n2. [Installation](#installation)\n3. [Supported Data Annotations](#supported-data-annotations)\n4. [FAQ](#faq)\n5. [License](#license)\n\n## Introduction\nClient side form validation in ASP.NET Core sucks.\n\nSpecifically, tag helpers and `HTMLHelper` methods\ngenerate [non-standard validation attributes](https://learn.microsoft.com/en-us/aspnet/core/mvc/models/validation?view=aspnetcore-8.0#client-side-validation)\nand require the use of the `jquery.validate` and `jquery.validate.unobtrusive` libraries.\n\nThis library overrides this behavior to generate standard HTML5 validation attributes.\n\n\u003e If you like this library, check out our main\n\u003e project [Finbuckle.MultiTenant](https://github.com/Finbuckle/Finbuckle.MultiTenant) and consider becoming a sponsor.\n\n## Installation\n\n1. Add the `Finbuckle.Html5Validation` NuGet package to your project.\n\n2. Add the `Html5Validation` service to your app:\n```csharp\nusing Finbuckle.Html5Validation;\n\nvar builder = WebApplication.CreateBuilder(args);\nbuilder.Services.AddHtml5Validation();\n\n// Rest of app code omitted.\n```\n\n## Supported Data Annotations\n\nThe following data annotations are supported:\n\n| Attribute                    | ASP.NET Core                                                                                                                                                                                                                        | Finbuckle.Html5Validation                       |\n|------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------|\n| `[Required]`                 | - `data-val=true`\u003cbr\u003e - `data-val-required=\"{message}\"`                                                                                                                                                                             | - `required`                                    |\n| `[MinLength]`                | - `minlength=\"{min}\"`\u003cbr\u003e - `data-val=true`\u003cbr\u003e - `data-val-minlength=\"{message}\"` \u003cbr\u003e- `data-val-maxlength-min=\"{min}\"`                                                                                                           | - `minlength=\"{min}\"`                           | \n| `[MaxLength]`                | - `maxlength=\"{max}\"`\u003cbr\u003e - `data-val=true`\u003cbr\u003e - `data-val-maxlength=\"{message}\"` \u003cbr\u003e- `data-val-maxlength-max=\"{max}\"`                                                                                                           | - `maxlength=\"{max}\"`                           |                                                                          |\n| `[StringLength]`             | - `minlength=\"{min}\"`\u003cbr\u003e - `maxlength=\"{max}\"`\u003cbr\u003e - `data-val=true`\u003cbr\u003e - `data-val-maxlength=\"{message}\"` \u003cbr\u003e- `data-val-maxlength-max=\"{max}\"` \u003cbr\u003e - `data-val-minlength=\"{message}\"` \u003cbr\u003e - `data-val-maxlength-min=\"{min}\"` | - `minlength=\"{min}\"`\u003cbr\u003e - `maxlength=\"{max}\"` |\n| `[Range]`                    | - `data-val=true`\u003cbr\u003e - `data-val-range=\"{message}\"`\u003cbr\u003e - `data-val-range-min=\"{min}\"` \u003cbr\u003e- `data-val-range-max=\"{max}\"`                                                                                                          | - `min=\"{min}\"`\u003cbr\u003e - `max=\"{max}\"`             |\n| `[RegularExpression]`        | - `data-val=true`\u003cbr\u003e - `data-val-regex=\"{message}\"`\u003cbr\u003e - `data-val-regex-pattern=\"{regex}\"`                                                                                                                                       | - `pattern=\"{regex}\"`                           |\n| `[DataType(DataType.{type}]` | - `type=\"{type}\"`\u003cbr\u003e - `data-val=true`\u003cbr\u003e - `data-val-{type}=\"{message}\"`                                                                                                                                                         | - `type=\"{type}\"`                               |\n| `[EmailAddress]`             | - `type=\"email\"`\u003cbr\u003e - `data-val=true`\u003cbr\u003e - `data-val-email=\"{message}\"`                                                                                                                                                           | - `type=\"email\"`                                |\n| `[Phone]`                    | - `type=\"tel\"`\u003cbr\u003e - `data-val=true`\u003cbr\u003e - `data-val-phone=\"{message}\"`                                                                                                                                                             | - `type=\"tel\"`                                  |\n| `[Url]`                      | - `type=\"url\"`\u003cbr\u003e - `data-val=true`\u003cbr\u003e - `data-val-url=\"{message}\"`                                                                                                                                                               | - `type=\"url\"`                                  |\n\n\u003e Note that `[DataType(DataType.{type})]` only supports simple types such as email, phone, and url.\n\n## Installation\n\n1. Add the `Finbuckle.Html5Validation` NuGet package to your project.\n\n2. In your app configuration add the `Html5Validation` service:\n```csharp\nusing Finbuckle.Html5Validation;\n\nvar builder = WebApplication.CreateBuilder(args);\n\n// ... Add normal services.\n\n// Add Finbuclke.Html5Validation.\nbuilder.Services.AddHtml5Validation();\n\n// ... rest of file omitted.\n```\n## FAQ\n\n- **Why not just use the `jquery.validate` and `jquery.validate.unobtrusive` libraries?**\n\n  *These libraries are not standard HTML5 validation attributes and require additional JavaScript libraries to work. \n  This library generates standard HTML5 validation attributes that work out of the box with modern browsers.*\n\n\n- **Does it have any imapct on server side validation?**\n\n  *No, this library only affects client-side validation.*\n\n\n- **Does this library work with Blazor?**\n\n  *No, this library only works with ASP.NET Core MVC Razor Pages and MVC apps that use tag helpers and `HTMLHelper` \n  form input methods.*\n\n## License\n\nThis project is licensed under the [MIT License](https://opensource.org/license/mit). See [LICENSE](LICENSE) file for\nlicense information.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffinbuckle%2Ffinbuckle.html5validation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffinbuckle%2Ffinbuckle.html5validation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffinbuckle%2Ffinbuckle.html5validation/lists"}