0

0

C#的Razor页面是什么?如何创建和使用?

月夜之吻

月夜之吻

发布时间:2025-09-12 08:05:01

|

957人浏览过

|

来源于php中文网

原创

Razor页面是ASP.NET Core中将C#代码嵌入HTML的轻量级开发方式,通过.cshtml文件实现前后端结合,使用@page、@model等指令定义页面和模型,支持动态数据渲染与表单处理,简化中小型应用开发流程。

c#的razor页面是什么?如何创建和使用?

Razor页面是ASP.NET Core中一种轻量级的页面开发方式,它允许你将C#代码嵌入到HTML中,从而创建动态Web页面。简单来说,它就是一种将前端展示和后端逻辑结合在一起的技术。

解决方案

Razor页面本质上是

.cshtml
文件,它包含了HTML标记、Razor指令和C#代码。ASP.NET Core运行时会解析这些文件,并将C#代码编译成最终的HTML输出。

创建Razor页面:

  1. 新建ASP.NET Core项目: 在Visual Studio中,选择“创建新项目”,然后选择“ASP.NET Core Web应用”,选择“Web应用(模型-视图-控制器)”或“Web应用”,这里选择“Web应用”会更接近Razor Pages的默认架构。
  2. 添加Razor页面: 在“Pages”文件夹下(如果选择的是Web应用(模型-视图-控制器)项目,则需要在“Views”文件夹下手动创建Pages文件夹),右键单击,选择“添加” -> “新建项”,然后选择“Razor页面”。 给它起个名字,比如“MyPage.cshtml”。

使用Razor页面:

打开

MyPage.cshtml
文件,你会看到类似这样的结构:

@page
@model MyWebApp.Pages.MyPageModel
@{
    ViewData["Title"] = "My Page";
}

@ViewData["Title"]

This is my Razor page.

Current time: @DateTime.Now

    @foreach (var item in Model.MyList) {
  • @item
  • }
  • @page
    : 这个指令将该文件标记为Razor页面。
  • @model
    : 指定与该页面关联的模型类。 通常,每个Razor页面都有一个对应的“页面模型”类,它处理页面的逻辑。 如果省略,则默认使用
    PageModel
    基类。
  • @{ ... }
    : 在花括号内可以编写C#代码块。
  • @ViewData["Title"]
    : 从
    ViewData
    字典中获取标题,
    ViewData
    允许你在页面和页面模型之间传递数据。
  • @DateTime.Now
    : 在HTML中嵌入C#表达式。
  • @foreach
    : 在HTML中嵌入C#循环。
  • Model.MyList
    : 访问页面模型中名为
    MyList
    的属性。

页面模型:

为了让Razor页面更具结构性,通常会创建一个与页面关联的页面模型类。 在

MyPage.cshtml
文件所在的文件夹中,创建一个名为
MyPage.cshtml.cs
的文件(注意文件名要对应)。

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace MyWebApp.Pages
{
    public class MyPageModel : PageModel
    {
        public List MyList { get; set; } = new List { "Item 1", "Item 2", "Item 3" };

        public void OnGet()
        {
            // 在页面加载时执行的逻辑
        }
    }
}
  • MyPageModel
    : 页面模型类,继承自
    PageModel
  • MyList
    : 一个属性,可以在Razor页面中访问。
  • OnGet()
    : 处理HTTP GET请求的方法。 页面加载时会执行此方法。 还可以有
    OnPost()
    方法来处理POST请求。

运行项目:

运行ASP.NET Core项目,然后在浏览器中访问

/MyPage
(或者项目配置的路由),你应该能看到页面渲染的结果。

php中级教程之ajax技术
php中级教程之ajax技术

AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。它不是新的编程语言,而是一种使用现有标准的新方法,最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容,不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。《php中级教程之ajax技术》带你快速

下载

Razor页面的优势是什么?为什么选择它而不是MVC?

Razor Pages简化了小型到中型Web应用的开发。与传统的MVC模式相比,它减少了样板代码,并将视图和控制器逻辑紧密地结合在一起。对于简单的页面,你不需要单独的控制器类,所有逻辑都可以在页面模型中处理。这使得代码更易于阅读和维护。当然,对于更复杂的应用程序,MVC可能仍然是更好的选择,因为它提供了更好的分离关注点。

如何在Razor页面中处理表单提交

要在Razor页面中处理表单提交,你需要使用

OnPost
方法。 首先,在你的Razor页面中创建一个表单:

You entered: @Model.Name

然后在你的页面模型中,添加一个

Name
属性和一个
OnPost
方法:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace MyWebApp.Pages
{
    public class MyPageModel : PageModel
    {
        [BindProperty]
        public string Name { get; set; }

        public void OnPost()
        {
            // 在这里处理表单提交
            // 可以访问 this.Name 来获取用户输入的值
        }
    }
}
  • [BindProperty]
    : 这个属性告诉ASP.NET Core将表单中的
    Name
    字段绑定到
    Name
    属性。
  • OnPost()
    : 当表单提交时,会执行此方法。 你可以在这里处理表单数据。
  • this.Name
    : 在
    OnPost
    方法中,你可以通过
    this.Name
    访问用户输入的值。

你还可以使用不同的

OnPost
方法来处理不同的表单提交。 例如,你可以创建
OnPostSubmit1()
OnPostSubmit2()
方法,并在表单中使用不同的提交按钮来调用它们。

如何在Razor页面中使用依赖注入?

依赖注入是ASP.NET Core的核心特性之一,你可以在Razor页面中使用它来访问各种服务。 例如,假设你有一个服务叫做

IMyService

public interface IMyService
{
    string GetMessage();
}

public class MyService : IMyService
{
    public string GetMessage()
    {
        return "Hello from MyService!";
    }
}

首先,你需要在

Startup.cs
文件中注册这个服务:

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();
    services.AddTransient();
}

然后,你可以在你的页面模型中使用构造函数注入来获取这个服务:

using Microsoft.AspNetCore.Mvc.RazorPages;

namespace MyWebApp.Pages
{
    public class MyPageModel : PageModel
    {
        private readonly IMyService _myService;

        public MyPageModel(IMyService myService)
        {
            _myService = myService;
        }

        public string Message { get; set; }

        public void OnGet()
        {
            Message = _myService.GetMessage();
        }
    }
}
  • private readonly IMyService _myService;
    : 声明一个私有只读字段来存储服务实例。
  • public MyPageModel(IMyService myService)
    : 使用构造函数注入来获取服务实例。
  • Message = _myService.GetMessage();
    : 在
    OnGet
    方法中调用服务方法。

最后,你可以在Razor页面中使用

Message
属性来显示服务返回的消息:

@page
@model MyWebApp.Pages.MyPageModel
@{
    ViewData["Title"] = "My Page";
}

@ViewData["Title"]

@Model.Message

总的来说,Razor页面提供了一种简洁高效的方式来构建ASP.NET Core Web应用。它简化了开发流程,并提供了强大的功能来处理各种Web开发任务。

相关专题

更多
html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

616

2023.06.14

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

655

2023.06.21

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

470

2023.07.31

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

245

2023.08.01

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2895

2023.08.11

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

505

2023.08.11

html转txt
html转txt

html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

312

2023.08.31

html文本框代码怎么写
html文本框代码怎么写

html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

425

2023.09.01

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

23

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 7.1万人学习

C 教程
C 教程

共75课时 | 4.1万人学习

C++教程
C++教程

共115课时 | 12.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号