程序员的知识教程库

网站首页 > 教程分享 正文

c#.Net.NetCore面试(三十六)Razor Pages

henian88 2024-08-15 05:00:56 教程分享 5 ℃ 0 评论

Razor Pages 是用于构建基于页面的 Web 应用程序的一个框架。它使用 Razor 视图引擎来呈现 HTML 页面,并且每个页面都有自己的代码后端,用于处理用户输入和与数据库交互。

以下是如何使用 Razor Pages 的基本步骤

  1. 创建项目:首先,你需要创建一个新的 ASP.NET Core Web 应用程序项目,并选择“Razor Pages”作为项目模板。
  2. 添加页面:在项目中,你可以在 Pages 文件夹下添加新的 Razor 页面。每个页面都是一个 .cshtml 文件,它包含 HTML 标记和嵌入的 Razor 代码。
  3. 处理用户输入:你可以在页面的后端代码(.cshtml.cs 文件)中处理用户输入。这个后端文件包含一个类,该类继承自 PageModel 类。你可以在这个类中定义方法(如 OnGet 和 OnPost),这些方法会在页面加载或用户提交表单时被调用。
  4. 访问数据库:你可以在 PageModel 类中注入数据库上下文(如 ApplicationDbContext),并使用它来访问数据库。你可以使用 Entity Framework Core(EF Core)来执行数据库操作,如查询、添加、更新和删除记录
  5. 渲染页面:你可以使用 Razor 语法在 .cshtml 文件中呈现 HTML 和动态内容。例如,你可以使用 @Model 关键字来访问 PageModel 类的属性,或者使用 @foreach 循环来遍历集合。
  6. 配置路由:Razor Pages 使用约定路由来映射页面到 URL。默认情况下,页面的路径是相对于 Pages 文件夹的路径。你也可以使用 [Route] 属性来自定义路由。
  7. 处理身份验证和授权:你可以使用 ASP.NET Core 的身份验证和授权功能来保护你的页面。你可以在 Startup.cs 文件中配置身份验证方案,并在 PageModel 类中使用 [Authorize] 属性来要求用户登录才能访问页面。
  8. 运行和调试:最后,你可以运行你的应用程序并调试它。你可以使用 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/(或你自定义的域名和端口)。你应该能看到一个带有输入框的页面。输入你的名字,点击提交按钮,页面应该会显示一个欢迎消息。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表