This is similar to the previous example, except that the CSV file can be uploaded again and again in the App-Settings UI. So the path isn't hard-coded.
@{ // get the query var query = App.Query["ProductsFromCsvInAppSettings"]; // get the data from the query var products = AsList(query); // get the current author (if available) from the stream Current var current = AsList(query["Current"]).FirstOrDefault(); } <ul> @foreach(var product in products) { <!-- this li will have class=selected if it's the current one --> <li class='@(product == current ? "selected" : "")'> <!-- this creates a link to the current tutorial (data220) and product=id --> <a href='@Link.To(parameters: "data231=true&product=" + product.EntityId)'> @product.Name (#@product.Id) </a> @if(current == product) { <br> <em> @current.Description (<a href="@product.Link" target="_blank">find out more</a>) </em> } </li> } </ul>
Below you'll see the source code of the file. Note that we're just showing the main part, and hiding some parts of the file which are not relevant for understanding the essentials. Click to expand the code
Id;Name;Description;License;Created;Link 1;2sxc;A neat CMS extension for DNN;MIT;01.01.2012;https://2sxc.org/ 2;Koi;System to coordinate the CSS-Framework between theme and modules. ;MIT;01.06.2018;https://connect-koi.net/ 3;Razor Blade;Helpers for common Razor task;MIT;01.02.2019;https://github.com/DNN-Connect/razor-blade 4;Image Resizer;Automatic, amazing image Resizer;MIT;06.05.2013;https://2sxc.org/learn-extensions/ImageResizer
@inherits Custom.Hybrid.Razor12 <!-- unimportant stuff, hidden --> @using ToSic.Razor.Blade; @using System.Linq; Example from CSV which was uploaded as... <!-- unimportant stuff, hidden --> @{ // get the query var query = App.Query["ProductsFromCsvInAppSettings"]; // get the data from the query var products = AsList(query); // get the current author (if available) from the stream Current var current = AsList(query["Current"]).FirstOrDefault(); } <ul> @foreach(var product in products) { <!-- this li will have class=selected if it's the current one --> <li class='@(product == current ? "selected" : "")'> <!-- this creates a link to the current tutorial (data220) and product=id --> <a href='@Link.To(parameters: "data231=true&product=" + product.EntityId)'> @product.Name (#@product.Id) </a> @if(current == product) { <br> <em> @current.Description (<a href="@product.Link" target="_blank">find out more</a>) </em> } </li> } </ul> <!-- unimportant stuff, hidden --> <!-- unimportant stuff, hidden -->