{"id":43571910,"url":"https://github.com/2sic/app-tutorial-razor","last_synced_at":"2026-02-03T22:17:27.539Z","repository":{"id":41138249,"uuid":"174375749","full_name":"2sic/app-tutorial-razor","owner":"2sic","description":"Tutorial app for working in 2sxc with Razor","archived":false,"fork":false,"pushed_at":"2025-11-21T14:10:06.000Z","size":20233,"stargazers_count":4,"open_issues_count":6,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-21T16:08:56.958Z","etag":null,"topics":["2sxc","blazor","dnn","dnncms","dotnetnuke","oqtane","razor","structured-content"],"latest_commit_sha":null,"homepage":"https://2sxc.org/dnn-tutorials/en/razor","language":"HTML","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/2sic.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-03-07T15:55:11.000Z","updated_at":"2025-11-21T14:10:12.000Z","dependencies_parsed_at":"2024-04-24T06:53:02.985Z","dependency_job_id":"7af35525-0789-4fa4-a437-ee1228d84f1e","html_url":"https://github.com/2sic/app-tutorial-razor","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/2sic/app-tutorial-razor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2sic%2Fapp-tutorial-razor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2sic%2Fapp-tutorial-razor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2sic%2Fapp-tutorial-razor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2sic%2Fapp-tutorial-razor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2sic","download_url":"https://codeload.github.com/2sic/app-tutorial-razor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2sic%2Fapp-tutorial-razor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29059578,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T20:13:53.544Z","status":"ssl_error","status_checked_at":"2026-02-03T20:13:40.507Z","response_time":96,"last_error":"SSL_read: 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":["2sxc","blazor","dnn","dnncms","dotnetnuke","oqtane","razor","structured-content"],"created_at":"2026-02-03T22:17:27.024Z","updated_at":"2026-02-03T22:17:27.530Z","avatar_url":"https://github.com/2sic.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg loading=\"lazy\" src=\"app-icon.png\" align=\"right\" width=\"200px\"\u003e\n\n# Razor Tutorials for .net CMSs\n\n\u003e This is a [2sxc](https://2sxc.org) App for [DNN ☢️](https://www.dnnsoftware.com/) and [Oqtane 💧](https://www.oqtane.org/)\n\nIt contains around 500 snippets of code, which is executed when you look at it.\nThis guarantees that the code actually works.\n\nYou'll find a live, running copy of this tutorial on \u003chttps://go.2sxc.org/tut\u003e.\n\nYou can also download the latest copy of this App directly from the [releases](./releases) and install it in a DNN with 2sxc, to play around with the code yourself.\n\n| Aspect              | Status | Comments or Version |\n| ------------------- | :----: | ------------------- |\n| 2sxc                | ✅     | requires 2sxc v20.00                                                          |\n| Dnn                 | ✅     | For v9.11.02+                                                                 |\n| Oqtane 2            | ✅     | Requires v6.00+                                                               |\n| No jQuery           | ✅     |                                                                               |\n| Dnn Demo            | ✅     | See [Dnn Razor Tutorial](https://2sxc.org/dnn-tutorials/en/razor)             |\n| Oqtane Demo         | ✅     | See [Oqtane Razor Tutorial](https://blazor-cms.org/oqtane-tutorials)          |\n| Install Checklist   | ➖     | Just get from [releases](https://github.com/2sic/app-tutorial-razor/releases) |\n| Source \u0026 License    | ✅     | included, ISC/MIT license                                                     |\n| App Catalog         | ✅     | See [app catalog](https://2sxc.org/en/apps/app/dnn-razor-tutorial)            |\n| Screenshots         | ✅     | See [app catalog](https://2sxc.org/en/apps/app/dnn-razor-tutorial)            |\n| Best Practices      | ✅     | Uses v16.00 conventions                                                       |\n| Bootstrap 3         | ✔️     |                                                                               |\n| Bootstrap 4         | ✔️     | Works, but not optimized                                                      |\n| Bootstrap 5         | ✅     | Works, optimized                                                              |\n\n## Contribute\n\nFeel free to contribute to this app, please just coordinate it w/iJungleboy.\n\n[//]: # (## Customize the App not needed, so commented out)\n\n## History\n\n### 2025-11-16\n\n1. 2dm: Improved sample with Template Delegates - added named tuples; much nicer\n\n### 2025-09-18\n\n1. 2dm: Added url protection to home and tutorial page, to stop crawlers from generating infinite urls\n    1. If the home page has parameters, it will show a 404 since this is not expected\n    1. If the tutorial page has a parameter with `=tut` it will show a 404 since this is not expected, it should always be `tut=...`\n\n### v20 (2025-05+)\n\n* Added Tutorials for [Static Assets Retrieval with App Query](https://2sxc.org/dnn-tutorials/en/razor/tut/data-app-assets)\n  * Get Files via App Query\n  * Get File via App Query\n* Updated [URL Parameters Tutorials](https://2sxc.org/dnn-tutorials/en/razor/tut/code-link-parameters-modify)\n  * Toggle()\n  * Remove()\n  * Filter()\n  * Flush()\n  * ContainsKey(Key)\n  * Get(Key)\n* Added Tutorials for [new Toolbar Features](https://2sxc.org/dnn-tutorials/en/razor/tut/ui-pickers-v20)\n  * Tweak Notes\n  * Audience Access\n  * Edition Access/ Switching\n* Extended User Service Tutorials with [App Query Fetching](https://2sxc.org/dnn-tutorials/en/razor/tut/get-users-appquery)\n  * Get Users via App Query\n  * Get Roles via App Query\n* Added Tutorials for new [User Service](https://2sxc.org/dnn-tutorials/en/razor/tut/userservice)\n  * Get Current User\n  * Get Registered Users\n  * Get Roles\n  * Get User by Property\n  * Get Users By Role\n\n### v17 - v19\n\nLots of small changes, not detailed here\n\n### v16\n\n* v16.07.01 2023-09-26\n  * reorganized so the snippets are all in the `/tutorials` folder\n  * removed unused images\n  * tested on Oqtane\n* v16.07.00 2023-09-25\n  * Restructured the entire system so each Snip is standalone in an own file\n  * Build new infrastructure for Snips to exist in variants\n  * Almost all infrastructure code is now typed\n  * Added more than 100 tutorials for Typed\n* v16.00.00 2023-05\n  * Removed _ from Filenames\n  * Enhanced Kit.Image with `imgAltFallback`\n  * Replaced turnOn Tag with `Kit.Page.TurnOn`\n\n### v12 - v14\n\n* v14.07.05\n  * Migrated the app to the 14.07 best practices\n  * Changed the toolbar tutorials to also show the new IToolbarBuilder\n  * Added a CmsContext tutorial\n* v13.01\n  * Enabled data-optimizations\n  * Improved home\n  * Added tutorial navigation\n  * Added Oqtane support\n  * Added IScrub tutorials\n* v12.11 2021-12\n  * Added new tutorials for turnOn\n* v12.05 2021-10\n  * Upgraded everything to also run in Oqtane (except for Dnn specific examples)\n  * Using the latest \u0026 greatest best-practices of 2sxc 12.05\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2sic%2Fapp-tutorial-razor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2sic%2Fapp-tutorial-razor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2sic%2Fapp-tutorial-razor/lists"}