Razor Pages 是用于构建基于页面的 Web 应用程序的一个框架。它使用 Razor 视图引擎来呈现 HTML 页面,并且每个页面都有自己的代码后端,用于处理用户输入和与数据库交互。
以下是如何使用 Razor Pages 的基本步骤:
- 创建项目:首先,你需要创建一个新的 ASP.NET Core Web 应用程序项目,并选择“Razor Pages”作为项目模板。
- 添加页面:在项目中,你可以在 Pages 文件夹下添加新的 Razor 页面。每个页面都是一个 .cshtml 文件,它包含 HTML 标记和嵌入的 Razor 代码。
- 处理用户输入:你可以在页面的后端代码(.cshtml.cs 文件)中处理用户输入。这个后端文件包含一个类,该类继承自 PageModel 类。你可以在这个类中定义方法(如 OnGet 和 OnPost),这些方法会在页面加载或用户提交表单时被调用。
- 访问数据库:你可以在 PageModel 类中注入数据库上下文(如 ApplicationDbContext),并使用它来访问数据库。你可以使用 Entity Framework Core(EF Core)来执行数据库操作,如查询、添加、更新和删除记录。
- 渲染页面:你可以使用 Razor 语法在 .cshtml 文件中呈现 HTML 和动态内容。例如,你可以使用 @Model 关键字来访问 PageModel 类的属性,或者使用 @foreach 循环来遍历集合。
- 配置路由:Razor Pages 使用约定路由来映射页面到 URL。默认情况下,页面的路径是相对于 Pages 文件夹的路径。你也可以使用 [Route] 属性来自定义路由。
- 处理身份验证和授权:你可以使用 ASP.NET Core 的身份验证和授权功能来保护你的页面。你可以在 Startup.cs 文件中配置身份验证方案,并在 PageModel 类中使用 [Authorize] 属性来要求用户登录才能访问页面。
- 运行和调试:最后,你可以运行你的应用程序并调试它。你可以使用 Visual Studio 或其他支持 ASP.NET Core 的开发工具来运行和调试你的应用程序。
我们将创建一个的Razor Page,它允许用户输入他们的名字,并在页面上显示一个欢迎消息。
首先,确保你有一个ASP.NET Core项目,并且已经在Pages文件夹下。
创建页面
在Pages文件夹下,创建两个文件:Index.cshtml 和 Index.cshtml.cs。这些文件将组成我们的Razor Page。
页面视图 (Index.cshtml)
@page
@model IndexModel
@{
ViewData["Title"] = "Home Page";
}
<h2>Welcome to the Home Page</h2>
<form method="post">
<div class="form-group">
<label for="inputName">Enter your name:</label>
<input type="text" class="form-control" id="inputName" asp-for="InputName" />
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
@if (!string.IsNullOrEmpty(Model.Message))
{
<div class="alert alert-success">
@Model.Message
</div>
}
解析:
- @page 指示这是一个Razor Page。
- @model IndexModel 指定该页面的模型是IndexModel类。
- ViewData["Title"] 设置页面的标题。
- <form method="post"> 创建一个表单,当用户提交时将使用POST方法。
- <input type="text" asp-for="InputName" /> 创建一个文本输入框,并将其绑定到IndexModel类中的InputName属性。
- @if (!string.IsNullOrEmpty(Model.Message)) 检查模型中的Message属性是否为空。如果不为空,则显示一个包含该消息的警告框。
页面后端代码 (Index.cshtml.cs)
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace YourNamespace.Pages
{
public class IndexModel : PageModel
{
[BindProperty]
public string InputName { get; set; }
public string Message { get; set; }
public void OnGet()
{
// 当页面首次加载时,不执行任何操作
}
public IActionResult OnPost()
{
// 当表单提交时,执行以下操作
if (!string.IsNullOrEmpty(InputName))
{
Message = #34;Welcome, {InputName}!";
}
else
{
Message = "Please enter your name.";
}
// 返回当前页面,这样视图可以显示Message
return Page();
}
}
}
解析:
- IndexModel 类继承自 PageModel,它是所有Razor Page模型的基类。
- [BindProperty] 属性用于自动绑定表单数据到InputName属性。
- OnGet 方法在页面首次加载时被调用。在这个示例中,我们不需要在这里做任何事情。
- OnPost 方法在表单提交时被调用。它检查InputName属性是否有值,并据此设置Message属性。
- return Page(); 返回当前页面,这样视图可以更新并显示Message。
配置路由(可选)
默认情况下,Razor Pages使用文件夹和文件名来确定路由。在这个例子中,Index.cshtml的路由将是/。如果你想要自定义路由,可以在Index.cshtml.cs中使用[Route]属性。
运行和测试
现在,运行你的ASP.NET Core应用程序,并在浏览器中访问https://localhost:5001/(或你自定义的域名和端口)。你应该能看到一个带有输入框的页面。输入你的名字,点击提交按钮,页面应该会显示一个欢迎消息。
本文暂时没有评论,来添加一个吧(●'◡'●)