In this article I will explain with an example, how to pass (send) data from Page Model to Razor Page (cshtml) in ASP.Net Core Razor Pages.
The data will be set into a public property inside the Page Model and then using Razor syntax the data will be fetched inside the Razor Page (cshtml) in ASP.Net Core Razor Pages.
 
 
Creating a new ASP.Net Core 2.0 Project
Let’s get started with creating your first ASP.Net Core 2.0 Project.
1. Open Visual Studio and from Start section click on Create New Project.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
2. From the New Project Dialog window, select ASP.Net Core Web Application option. Then you need to set a suitable Name for your project and also you can set its Location where you want to create the Project.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
3. From the New ASP.Net Core Web Application Dialog, select Empty and click OK.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
4. Your first Hello World ASP.Net Core Web Application Project is now ready and you should see the following folders and files in your Solution Explorer window.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
 
Adding Razor Page to the ASP.Net Core Project
1. Inside the Solution Explorer window, Right Click on the Project and then click Add and then New Folder option from the Context Menu.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
2. Name the newly added Folder as Pages.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
3. Now, inside the Solution Explorer window, Right Click on the Pages folder and then click on Add and then Razor Page option of the Context Menu.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
4. From the Add Scaffold Dialog window, select the “Razor Page” option and click Add button.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
5. You will now be asked to provide a suitable Name to the new Razor Page.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
Once you click add, the following Razor Page is created. The default handler method is “Get” in the Razor PageModel class.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
Inside the Solution Explorer window, the corresponding Razor HTML Page is also shown.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
And when the Razor HTML Page is opened it looks as shown below.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
 
Configuring the Routes
The last important part is to configure the Routes in the Startup.cs file.
1. Open the Startup.cs class from the Solution Explorer window.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
2. In the Startup.cs, you will need to add the following namespace.
using Microsoft.AspNetCore.Mvc;
 
3. In the Startup.cs, there are two methods.
ConfigureServices
Inside this method, you will have to add the following code which will instruct the program to add MVC and Razor Pages Services along with version compatibility.
public void ConfigureServices(IServiceCollection services)
{
   services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
 
Configure
Inside this method, the default settings for the Razor Pages are configured.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }
 
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseCookiePolicy();
    app.UseMvc();
}
 
Now press F5 to run the Application and you should see a blank page in browser.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
 
Passing (Sending) data from Page Model to Razor Page in ASP.Net Core 2.0 Project
1. Inside the Razor PageModel class, OnGet handler method, the public property Message is set.
public class IndexModel : PageModel
{
    public string Message { get; set; }
    public void OnGet()
    {
        this.Message = "This is my First ASP.Net Core Razor Page";
    }
}
 
2. Then inside the Razor HTML Page, the public property Message is accessed from the Razor PageModel class and displayed.
@page
@model Core_HelloWorld.Pages.IndexModel
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Index</title>
</head>
<body>
    <h3>@Model.Message</h3>
</body>
</html>
 
3. Now press F5 to run the application and you should see a message displayed on page in browser.
ASP.Net Core Razor Pages: Pass (Send) data from Page Model to Razor Page
 
 
Downloads