{"id":24775542,"url":"https://github.com/sandrock/srktoolkit","last_synced_at":"2026-05-31T14:00:36.566Z","repository":{"id":29755379,"uuid":"33299046","full_name":"sandrock/SrkToolkit","owner":"sandrock","description":"Here goes another set of libraries to help out. Separated into a few assemblies to avoid loading too much stuff in your app.","archived":false,"fork":false,"pushed_at":"2025-10-16T09:37:07.000Z","size":2764,"stargazers_count":2,"open_issues_count":11,"forks_count":3,"subscribers_count":1,"default_branch":"dev/v2.0.0","last_synced_at":"2026-05-29T09:17:06.037Z","etag":null,"topics":["asp-mvc","dataannotations","extension-methods","htmlhelpers"],"latest_commit_sha":null,"homepage":"","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/sandrock.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-04-02T08:51:00.000Z","updated_at":"2025-10-16T09:37:11.000Z","dependencies_parsed_at":"2022-09-03T18:50:28.012Z","dependency_job_id":"1f289385-8be7-4574-9a9a-58fde075df84","html_url":"https://github.com/sandrock/SrkToolkit","commit_stats":{"total_commits":204,"total_committers":7,"mean_commits":"29.142857142857142","dds":"0.12254901960784315","last_synced_commit":"b4073a5a417347b2b94dfa92aebf7e12b8d258bb"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/sandrock/SrkToolkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandrock%2FSrkToolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandrock%2FSrkToolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandrock%2FSrkToolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandrock%2FSrkToolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sandrock","download_url":"https://codeload.github.com/sandrock/SrkToolkit/tar.gz/refs/heads/dev/v2.0.0","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandrock%2FSrkToolkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33733754,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-mvc","dataannotations","extension-methods","htmlhelpers"],"created_at":"2025-01-29T06:54:41.902Z","updated_at":"2026-05-31T14:00:36.544Z","avatar_url":"https://github.com/sandrock.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\r\nSrkToolkit ![](Sources/logo-32.png)\r\n==========\r\n\r\nHere goes another set of libraries to help out: SandRock's toolkit. Separated into a few assemblies to avoid loading too much stuff in your app.\r\n\r\nLicense: Apache License Version 2.0\r\n\r\n\r\nBranches\r\n--------------------\r\n\r\n- `release/2.0` current major release (WIP)\r\n    - `dev/v2.0.0` current development effort\r\n- `release/1.2` previous release (hotfixes only)\r\n- `release/1.1` old release (hotfixes only)\r\n\r\n\r\nAssemblies and nugets\r\n--------------------\r\n\r\n### v2.0 (netstandard2.0 and AspNetCore, keep partial support for net46) - \"near stable\" \r\n\r\nKeep support for latest .NET Framework and MVC5, full support for AspNetCore.  \r\n\r\nWARNING: work is in progress\r\n\r\n| Assembly                                                 | FX                            | Nuget                                                                            | Remark |\r\n|----------------------------------------------------------|-------------------------------|----------------------------------------------------------------------------------|--------|\r\n| [SrkToolkit.Common](Wiki/SrkToolkit.Common.md)           | net46, netstandard2.0, net7.0 | [nuget](https://www.nuget.org/packages/SrkToolkit.Common) prerelease             |        |\r\n| [SrkToolkit.Domain](Wiki/SrkToolkit.Domain.md)           | net46, netstandard2.0, net7.0 | [nuget](https://www.nuget.org/packages/SrkToolkit.Domain) prerelease             |        |\r\n| [SrkToolkit.Web.AspMvcCore2](Wiki/SrkToolkit.Web.md)     | netstandard2.0, net7.0        | [nuget](https://www.nuget.org/packages/SrkToolkit.Web.AspMvcCore2) prerelease    |        |\r\n| SrkToolkit.Domain.AspMvcCore2                            | netstandard2.0, net7.0,       | [nuget](https://www.nuget.org/packages/SrkToolkit.Domain.AspMvcCore2) prerelease |        |\r\n\r\n\r\n### v1.2 (support for net40 and MVC 4, net45 and MVC 5, netstandard2.0) - \"stable\" \r\n\r\nKeep support for many .NET Framework and MVC5, growing support for newer .NET.\r\n\r\n| Assembly                                                 | FX                           | Nuget                                                     | Remark |\r\n|----------------------------------------------------------|------------------------------|-----------------------------------------------------------|--------|\r\n| [SrkToolkit.Common](Wiki/SrkToolkit.Common.md)           | net40, net45, netstandard2.0 | [nuget](https://www.nuget.org/packages/SrkToolkit.Common) |        |\r\n| [SrkToolkit.Domain](Wiki/SrkToolkit.Domain.md)           | net40, net45, netstandard2.0 | [nuget](https://www.nuget.org/packages/SrkToolkit.Domain) |        |\r\n| [SrkToolkit.Web (for ASP MVC 3)](Wiki/SrkToolkit.Web.md) | net40                        | [nuget mvc4](https://www.nuget.org/packages/SrkToolkit.Web.AspMvc4) |        |\r\n| [SrkToolkit.Web (for ASP MVC 4)](Wiki/SrkToolkit.Web.md) | net45                        | [nuget mvc5](https://www.nuget.org/packages/SrkToolkit.Web.AspMvc5) |        |\r\n| SrkToolkit.Domain.AspMvc3                                | net40,                       | [nuget mvc4](https://www.nuget.org/packages/SrkToolkit.Domain.AspMvc4) |        |\r\n| SrkToolkit.Domain.AspMvc4                                | net45                        | [nuget mvc5](https://www.nuget.org/packages/SrkToolkit.Domain.AspMvc5) |        |\r\n| SrkToolit.WebForms                                       | net40                        | |        |\r\n\r\n\r\n### v1.1 (support for net40 and MVC 4, net45 and MVC 5) - \"obsolete\"\r\n\r\nSupport for many .NET Framework and MVC4/MVC5.\r\n\r\n| Assembly                                                 | FX                           | Nuget                                                     | Remark |\r\n|----------------------------------------------------------|------------------------------|-----------------------------------------------------------|--------|\r\n| [SrkToolkit.Common](Wiki/SrkToolkit.Common.md)           | net40, net45                 | [nuget](https://www.nuget.org/packages/SrkToolkit.Common) |        |\r\n| SrkToolkit.Common.Unsafe                                 | net40                        | |        |\r\n| [SrkToolkit.Domain](Wiki/SrkToolkit.Domain.md)           | net40, net45                 | [nuget](https://www.nuget.org/packages/SrkToolkit.Domain) |        |\r\n| [SrkToolkit.Web (for ASP MVC 3)](Wiki/SrkToolkit.Web.md) | net40                        | [nuget mvc4](https://www.nuget.org/packages/SrkToolkit.Web.AspMvc4) |        |\r\n| [SrkToolkit.Web (for ASP MVC 4)](Wiki/SrkToolkit.Web.md) | net45                        | [nuget mvc5](https://www.nuget.org/packages/SrkToolkit.Web.AspMvc5) |        |\r\n| SrkToolkit.Domain.AspMvc3                                | net40,                       | [nuget mvc4](https://www.nuget.org/packages/SrkToolkit.Domain.AspMvc4) |        |\r\n| SrkToolkit.Domain.AspMvc4                                | net45                        | [nuget mvc5](https://www.nuget.org/packages/SrkToolkit.Domain.AspMvc5) |        |\r\n| SrkToolit.WebForms                                       | net40                        | |        |\r\n| SrkToolit.Xaml                                           | net40, wp70, wp71, sl4       | |        |\r\n| SrkToolkit.Mvvm                                          | net40, wp70, wp71, sl4       | |        |\r\n| SrkToolkit.Services                                      | net40, wp70, wp71, sl4       | |        |\r\n\r\n[See all nuget packages](https://www.nuget.org/packages?q=Tags%3A%22SrkToolkit%22)\r\n\r\n\r\nContent at-a-glance\r\n--------------------\r\n\r\n### extend the framework to write code faster\r\n\r\n  - date manipulations, DataAnnotations\r\n  - string manipulations (trim with suffix, `AsNullIfEmpty()`, `AddHtmlLineBreaks()`, `TrimTextToWord()`, `HtmlParagraphizify()`, `RemoveDiacritics()`, `MakeUrlFriendly()`) \r\n  - `NameValueCollection.ToDictionary()`\r\n  - ObservableCollection\u003cT\u003e: `AddRange(IEnumerable\u003cT\u003e)`, `RemoveAll(Func\u003cT, bool\u003e)`\r\n  - StopwatchExtensions: fluent methods to avoid writing many lines of code when using it  \r\n  - email address decomposition (account, tags, local part, domain part) and validation\r\n  - no fancy stuff like `StringExtension.IsEmpty()`)\r\n\r\nAnd more...\r\n\r\n\r\n### Request-Result-ErrorCode pattern\r\n\r\n`SrkToolkit.Domain` contains a few classes to represent API or domain operations.\r\n\r\nUse the `rrr` [code snippet](snippets/visual-studio/srk.domain.snippet) to obtain a set of types for an operation.\r\n\r\n\r\n### extensions for ASP MVC\r\n \r\n - [date and time display helpers](Wiki/SrkToolkit.Web-HtmlHelpers.md) (based on timezone, standard formats, \u003ctime /\u003e tag...)\r\n - PageInfo is the one object to set your page title, description, meta tags, opengraph values...\r\n - fixed `AuthorizeAttribute` to return a \"HTTP 403 Forbidden\" instead of 401 auth page when already authenticated\r\n - 1-line error handling code for customized http-accept-aware error pages\r\n - wrapper for tempmessages to show nice informations, warnings and errors (extension methods for both controllers and view)\r\n - `DecimalModelBinder` with \"friendly\" decimal separator detection (useful for stupid cultures like French)\r\n - OpenGraph extensions to easily ouput tags in your page\r\n - `BaseSessionService` class that allows auto-populating new and expired sessions in a lazy way\r\n - `ResultService` class that allows oupting error pages from actions\r\n - `Html.DescriptionFor()` to show the Description property from the `[DisplayAttribute(Name = \"\", Description = \"\u003cdesc here\u003e\")]`\r\n - `Html.Submit()` 'cauz it's missing\r\n - `UrlHelper.SetQueryString(string url, params string[] keysAndValues)` to add/change query strings from a raw url\r\n - `JsonNetResult`: ActionResult class that allows you to specify your favorite JSON serializer\r\n - `HttpRequest`: `.IsXmlHttpRequest()`, `.IsUrlLocalToHost(url)`, `IsPost()`...\r\n\r\nAnd more...\r\n\r\n\r\nSigned code\r\n--------------------\r\n\r\nAll assemblies are signed. The real key is not in source control; I keep it to ensure my builds are only made by myself ([yes, I know that is not 100% true][1]).\r\n\r\nThe latest build can be found here: https://www.nuget.org/packages?q=Tags%3A%22srktoolkit%22\r\n\r\nWant unsigned assemblies? Get the code, remove the option and build.\r\n\r\n\r\n\r\n[1]: http://ianpicknell.blogspot.fr/2010/02/tampering-with-strong-named-assembly.html\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandrock%2Fsrktoolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsandrock%2Fsrktoolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandrock%2Fsrktoolkit/lists"}