asp.net core中的razor页面
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 页面使用教程 (非常全面,强烈推荐)
asp.net core中的razor页面的更多相关文章
- ASP.NET Core 中的 Razor 页面介绍
标题:ASP.NET Core 中的 Razor 页面介绍 地址:https://docs.microsoft.com/zh-cn/aspnet/core/razor-pages/index?view ...
- ASP.NET CORE RAZOR :将文件上传至 ASP.NET Core 中的 Razor 页面
本部分演示使用 Razor 页面上传文件. 本教程中的 Razor 页面 Movie 示例应用使用简单的模型绑定上传文件,非常适合上传小型文件. 有关流式传输大文件的信息,请参阅通过流式传输上传大文件 ...
- 【翻译】介绍 ASP.NET Core 中的 Razor Pages
介绍 ASP.NET Core 中的 Razor Pages 原文地址:Introduction to Razor Pages in ASP.NET Core 译文地址:介绍 asp. ...
- ASP.NET Core中使用Razor视图引擎渲染视图为字符串
一.前言 在有些项目需求上或许需要根据模板生产静态页面,那么你一样可以用Razor语法去直接解析你的页面从而把解析的页面生成静态页,这样的使用场景很多,不限于生成静态页面,视图引擎为我们提供了模型到视 ...
- ASP.NET Core中使用Razor视图引擎渲染视图为字符串(转)
一.视图渲染说明 在有些项目需求上或许需要根据模板生产静态页面,那么你一样可以用Razor语法去直接解析你的页面从而把解析的页面生成静态页,这样的使用场景很多,不限于生成静态页面,视图引擎为我们提供了 ...
- 【ASP.NET Core学习】Razor页面
准备工作 初始化空的项目(终端输入:dotnet new web -n=Razor) Nuget添加Microsoft.EntityFrameworkCore.SqlServer 和 Microsof ...
- ASP.NET Core 中的 Razor 文件编译
asp .net core mvc 3.0 在编译的时候做了一些改变,有些view视图更改需要重新编译,你也可以配置运行时编译,不用每次更改都去重新生成,具体代码如下,从官方文档看到,做个记录. Ra ...
- 1.ASP.NET Core 中向 Razor Pages 应用添加模型
右键单击“RazorPagesMovie”项目 >“添加” > “新建文件夹”. 将文件夹命名为“Models”.右键单击“Models”文件夹. 选择“添加” > “类”. 将类命 ...
- ASP.NET Core 中的脚本标记帮助程序
官网地址:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/tag-helpers/built-in/script-tag-helper?v ...
随机推荐
- Nginx使用笔记
本篇记录使用Nginx的一些tricks. 一.更改默认Web根目录 修改配置文件 Nginx默认的Web根目录是:/usr/share/nginx/html/,一般我们都是习惯的是:/var/www ...
- Apache的对象复制详解
BeanUtils.copyProperties 和 PropertyUtils.copyProperties 两个工具类都是对两个bean之前存在name相同的属性进行处理,无论是源bean或者目标 ...
- 洛谷 P1525 【关押罪犯】种类并查集
题解 P1525 [关押罪犯]:种类并查集 前言: 在数据结构并查集中,种类并查集属于扩展域并查集一类. 比较典型的题目就是:食物链(比本题难一些,有三个种类存在) 首先讲一下本题的贪心,这个是必须要 ...
- ZeroMQ安装说明
ZeroMQ安装说明 1. 安装 1.1.Linux zmq安装 安装过程参考地址:http://zeromq.org/intro:get-the-software的说明 安装步骤如下(在安装时参 ...
- Axure RP 快速原型设计工具
Axure RP是美国Axure Software Solution公司旗舰产品,是一个专业的快速原型设计工具,让负责定义需求和规格.设计功能和界面的专家能够快速创建应用软件或Web网站的线框图 ...
- 拓展中国剩余定理(exCRT)摘要
清除一个误区 虽然中国剩余定理和拓展中国剩余定理只差两个字,但他俩的解法相差十万八千里,所以会不会CRT无所谓 用途 求类似$$\begin{cases}x \equiv b_{1}\pmod{a_{ ...
- SqlServer Case when then用法总结
SELECT d.DicName , --DevelopMode ISNULL(NULL,NULL) , --Orgid b.FullName , --Areid c.DicName , --Inve ...
- KnockoutJs学习笔记(十一)
enable binding往往作用于form elements,比如input.select和textarea等.包含enable binding的DOM元素会依照enable binding参数的 ...
- Windows自动联网修复系统损坏文件
sfc修复: Win+X---命令提示符(管理员)---sfc /scannow---Enter可以查看是否存在系统文件损坏等问题 以管理员权限运行命令提示符,执行“dism /online /cle ...
- 解决 Delphi XE5 写Android程序的No resource identifier found for attribute... 错误【转】
原文:http://www.hxhlb.cn/article/32142aaeb67bbc05379369c3.html 那一天,我装上了RAD Studio XE5. 当天晚上,我就写了一个小小的A ...