Create any Hello Razor App
Open visual studio and create any simple, hello world type of asp.net core application.
We have created an application of one razor page called index.
Let us ensure that the app will run under development environment, so, open the program.cs file and set the environment to development.
// set the envirnment to development var builder = WebApplication.CreateBuilder(new WebApplicationOptions() { EnvironmentName = Environments.Development } ); builder.Services.AddRazorPages(); var app = builder.Build(); app.MapRazorPages(); app.Run();
Locate the appSettings.Development json file and open it. If you do not find this file, then you can create it, and write any json properties similar to what you see here.
{ "Company": "XYZ Company", "Address": { "City": "my city", "ISD Code": 34 }, "DetailedErrors": true, "Logging": { "LogLevel": { "Default": "Warning", "Microsoft.AspNetCore": "Error" } } }
We have added two json properties. One is a simple property called Company, and the other is a complex property called Address.
Video Explanation
Please watch the following youtube video:
How to programmatically read the configuration
Let us now read the properties programmatically and display their values on the index home page.
Open the backing file index.cshtml.cs
using Microsoft.AspNetCore.Mvc.RazorPages; namespace MyRazorApp.Pages { public class IndexModel : PageModel { private readonly IConfiguration _cfg; // dependency through ctor public IndexModel(IConfiguration cfg) { _cfg = cfg; } public string? TextMessage { get; set; } // on get method public void OnGet() { String CompanyName = _cfg.GetValue<String>("Company"); // notice the syntax for reading // a nested property String CityName = _cfg ["Address:City"]; // read an int Int32 ISDCode = _cfg.GetValue<Int32>("Address:ISDCode"); TextMessage = $"Company is {CompanyName}, " + $"City is {CityName} and " + $"ISD {ISDCode} "; } } }
The first step is to use constructor dependency injection and obtain the interface IConfiguration. It can be cached as a readonly
member.
We have also added a string property called TextMessage to hold the values as a single string.
The property Company has been read by using the GetValue
method.
We could have equivalently used the brackets indexer, as we have done for reading the nested City property.
Notice the syntax for reading a nested property.
ISDCode is another property of integer type. We have used the GetValue
function for extracting its value as an integer
.
Now let us open the index cshtml razor page for displaying the string.
@page @model MyRazorApp.Pages.IndexModel <p> @Model.TextMessage </p>
As you can see, the string is shown in a paragraph (p) tag.
Run the Application
Let us run the application. Allow the page to open.
We can verify that the appSettings file has been read and the values are displayed as expected (also see the linked video).
Similar Posts
This Blog Post/Article "(C# ASP.NET Core) Storing and Reading Configuration Key Value Data" by Parveen is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.