Razor 页面(Razor Pages)是 ASP.NET Core 2.0 中新增的一种Web页面模型,相对MVC形式更加简单易用,可以说是一个服务端的MVVM模型,本文简单的介绍一下它的用法。

参考文档: https://docs.microsoft.com/zh-cn/aspnet/core/razor-pages/

配置

首先配置Startup类,添加MVC支持

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseMvc();
    }
}

编写Razor页面

Razor页面依然是cshtml,它通常在Pages文件夹下,要求以@page开头作为标记。相对Razor视图更为简单,无需通过控制器处理。

@page

<h1>Hello, world!</h1>
<h2>The time on the server is @DateTime.Now</h2>

Razor页面也是支持Razor语法的。 模型绑定标记帮助程序和 HTML 帮助程序均只可用于 Razor 页面类中定义的属性

访问路径

页面的 URL 路径的关联由页面在文件系统中的位置决定:

  • 默认情况下,运行时在"Pages"文件夹中查找 Razor 页面文件。
  • URL 未包含页面时,Index 为默认页面

如下是基本示例:

文件名和路径

匹配的 URL

/Pages/Index.cshtml

/ 或 /Index

/Pages/Contact.cshtml

/Contact

/Pages/Store/Contact.cshtml

/Store/Contact

/Pages/Store/Index.cshtml

/Store 或 /Store/Index

绑定模型

Razor页面支持模型绑定,以实现动态页面功能。通过@model指令绑定模型。

@page
@model WebApplication2.Pages.HomeModel
@{
    Layout = null;
} <h3>@Model.Request.Host</h3>

模型类继承自PageModel类,需要实现一个OnGet函数,在请求页面会调用。

public class HomeModel : PageModel
{
    public void OnGet()
    {
    }
}

同样,它也支持其它几种Http操作的响应。

  • OnGet / OnGetAsync
  • OnPost / OnPostAsync
  • OnDelete / OnDeleteAsync

Url参数

对于页面"Home.cshtml",默认的页面是"/Home",它本身是可以支持带查询参数的Url的,如"/Home?id=32&name=abc"。要获取这些参数,可以在Model的Request.Query属性获取。

也可以直接在OnGet中添加参数

public void OnGet(string name, int id)

url解析时候可以直接映射到参数中,不匹配的参数会以默认值代替。

路由

如果要将url映射成"/Home/{name}/{id}"的形式,可以在@page指令中添加参数。

@page "{name}/{id}"

此时就可以接受"/Home/abc/32"这样的路由了,可以通过Model的RouteData.Values获取参数。

也可以直接在OnGet中添加参数,Url解析后直接映射到参数,不匹配的参数会赋默认值。

发布

发布的时候需默认是将cshtml编译后发布的,如果要发布cshtml,则要添加MvcRazorCompileOnPublish为false。

<PropertyGroup>
    <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
  </PropertyGroup>

相关文档

asp.net core中的razor页面的更多相关文章

  1. ASP.NET Core 中的 Razor 页面介绍

    标题:ASP.NET Core 中的 Razor 页面介绍 地址:https://docs.microsoft.com/zh-cn/aspnet/core/razor-pages/index?view ...

  2. ASP.NET CORE RAZOR :将文件上传至 ASP.NET Core 中的 Razor 页面

    本部分演示使用 Razor 页面上传文件. 本教程中的 Razor 页面 Movie 示例应用使用简单的模型绑定上传文件,非常适合上传小型文件. 有关流式传输大文件的信息,请参阅通过流式传输上传大文件 ...

  3. 【翻译】介绍 ASP.NET Core 中的 Razor Pages

    介绍 ASP.NET Core 中的 Razor Pages 原文地址:Introduction to Razor Pages in ASP.NET Core         译文地址:介绍 asp. ...

  4. ASP.NET Core中使用Razor视图引擎渲染视图为字符串

    一.前言 在有些项目需求上或许需要根据模板生产静态页面,那么你一样可以用Razor语法去直接解析你的页面从而把解析的页面生成静态页,这样的使用场景很多,不限于生成静态页面,视图引擎为我们提供了模型到视 ...

  5. ASP.NET Core中使用Razor视图引擎渲染视图为字符串(转)

    一.视图渲染说明 在有些项目需求上或许需要根据模板生产静态页面,那么你一样可以用Razor语法去直接解析你的页面从而把解析的页面生成静态页,这样的使用场景很多,不限于生成静态页面,视图引擎为我们提供了 ...

  6. 【ASP.NET Core学习】Razor页面

    准备工作 初始化空的项目(终端输入:dotnet new web -n=Razor) Nuget添加Microsoft.EntityFrameworkCore.SqlServer 和 Microsof ...

  7. ASP.NET Core 中的 Razor 文件编译

    asp .net core mvc 3.0 在编译的时候做了一些改变,有些view视图更改需要重新编译,你也可以配置运行时编译,不用每次更改都去重新生成,具体代码如下,从官方文档看到,做个记录. Ra ...

  8. 1.ASP.NET Core 中向 Razor Pages 应用添加模型

    右键单击“RazorPagesMovie”项目 >“添加” > “新建文件夹”. 将文件夹命名为“Models”.右键单击“Models”文件夹. 选择“添加” > “类”. 将类命 ...

  9. ASP.NET Core 中的脚本标记帮助程序

    官网地址:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/tag-helpers/built-in/script-tag-helper?v ...

随机推荐

  1. Windows bat 学习(高级)

    有一种叫做 Command Processor Extensions 的东西,即命令处理器扩展.他会使命令更加高级,功能更多. 在 cmd 里可以使用 ECHO %CMDEXTVERSION% 查看当 ...

  2. CTSC/APIO2018滚粗记

    CTSC/APIO2018滚粗记 前言 从\(5.5\)晚上的火车到\(5.14\)早上的高铁 \(10\)天的时间真的过去的很快. 眨眼间,就到了今天晚上的颁奖. 至于结果如何,反而并不是那么重要了 ...

  3. opencv附加依赖性选择,提示找不到opencv_world400d.dll

    连接器>>输入>>附加依赖项,添加opencv_world400d.lib库文件名,在....\opencv\build\x64\vc14\lib有2个lib文件, 带d的是d ...

  4. Visual Studio 配置 Avalon 自动补全

    以VS2013为例: 1.关闭 Visual Studio 2.打开 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Packa ...

  5. VELT-0.1.5开发:使用kgdb调试Linux内核【转】

    转自:http://demo.netfoucs.com/lights_joy/article/details/44106589 VELT的全称是Visual EmbedLinuxTools,它是一个与 ...

  6. Gitlab的安装汉化及问题解决

    Gitlab的安装汉化及问题解决(2017/12/14目前版本为10.2.4) 一.前言 Gitlab需要安装的包太TM多了,源码安装能愁死个人,一直出错,后来发现几行命令就装的真是遇到的新大陆一样. ...

  7. scrapy主动触发关闭爬虫

    在spider中时在方法里直接写 self.crawler.engine.close_spider(self, 'cookie失效关闭爬虫')   在pipeline和downloaderMiddle ...

  8. make distclean

    清空bin目录make dirclean 清空所有相关的东西,包括下载的软件包,配置文件,feeds内容等make distclean 这个命令会删除feeds目录及其下面的所有的文件,直接结果就是运 ...

  9. node.js模块、包

    创建模块 Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的 exports 对 ...

  10. IDEA 2017的插件mybatis plugin

    https://my.oschina.net/u/3209432/blog/1584110 idea2017,用上面的方法安装mybatis plugin