CSV files are often used so website-owners can upload data from another system. This example shows us getting the CSV-file through a query and visualizing it here.
@inherits Custom.Hybrid.Razor14 @using ToSic.Razor.Blade @using System.Linq @{ // get the query var query = Kit.Data.GetQuery("ProductsFromCSV"); // get the data from the query var products = AsList(query); // get the current product or the default - the query always selects one var current = AsList(query["Current"]).FirstOrDefault(); // Get the current url params so we can derive from it for details links var urlParams = CmsContext.Page.Parameters; } <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 page and product=id --> <a href='@Link.To(parameters: urlParams.Set("product", product.EntityId.ToString()))'> @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>
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
This is how this view would be configured for this sample.
Get Current Data from CSV
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.
@inherits Custom.Hybrid.Razor14 @using ToSic.Razor.Blade @using System.Linq @{ // get the query var query = Kit.Data.GetQuery("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(); // Get the current url params so we can derive from it for details links var urlParams = CmsContext.Page.Parameters; } <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 page and product=id --> <a href='@Link.To(parameters: urlParams.Set("product", product.EntityId.ToString()))'> @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>