zoukankan      html  css  js  c++  java
  • 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>

     

    相关文档

  • 相关阅读:
    ACM Red and Black
    ACM Wooden Stricks
    ACM Strange fuction
    ACM pie
    ACM Doing Homework again
    ACM FatMouse' Trade
    ACM 今年暑假不AC
    ACM Ignatius and the Princess II
    一、数组---第三大的数
    一、数组---移动零※※※※※※
  • 原文地址:https://www.cnblogs.com/TianFang/p/9784947.html
Copyright © 2011-2022 走看看