ASP.NET Core使用Razor页面

ASP.NET Core使用Razor页面

Razor是ASP.NET的页面引擎,在ASP.NET MVC 3以后被广泛使用,我在之前的博客中有所介绍,需要更多了解的朋友请移步【Razor语法】

在ASP.NET中,我们仍然使用Razor来构建Web页面。

首先使用Visual Studio 2017创建一个Web应用程序,打开创建好的项目,可以看到VS已经为我们创建好了项目的结构:

文件/文件夹 说明
wwwroot 静态文件目录
Pages Razor页面
appsettings.json 配置
Program.cs 托管ASP.NET Core的应用
Startup.cs 应用启动类,用于配置应用程序

与空白应用程序不同的是,Web应用默认为我们引用了MVC管道,代码在Startup文件中:

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseBrowserLink();
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
    }

    app.UseStaticFiles();

    app.UseMvc();
}

接下来我们创建一个自己的Razor页面。

Hello World 页面

在Razor文件夹邮件,选择Razor,不使用模板页,创建好以后,可以看到生成了两个文件:

文件名 说明
HelloWorld.cshtml Razor页面
HelloWorld.cshtml.cs Razor页面对应的Model

如果需要修改HTML代码,则在Razor页面中进行修改;数据、页面行为等内容则在Model文件中进行修改。

运行我们的HelloWorld页面,Razor对应的页面地址为:~/HelloWorld

添加Model字段

为了测试Model的用法,我们在Model中添加两个字段,并在OnGet方法中赋值,修改后的Model如下:

public class HelloWorldModel : PageModel
{
    /// <summary>
    /// 操作
    /// </summary>
    public string Method { get; set; }

    /// <summary>
    /// 服务器时间
    /// </summary>
    public string ServerTime
    {
        get
        {
            return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        }
    }

    public void OnGet()
    {
        this.Method = "Get";
    }
}

对页面进行修改,添加显示Model中字段的代码:

<body>
    <h1>Hello World</h1>
    <p>
        Method:@Model.Method
    </p>
    <p>
        Server time:@Model.ServerTime
    </p>
</body>

编译应用程序,刷新浏览器中的页面查看效果。

添加POST操作

添加新的实体Visitor

public class Visitor
{
    public string Name { get; set; }
    public string Email { get; set; }
}

在Model中添加OnPost代码:

/// <summary>
/// 访客
/// </summary>
[BindProperty]
public Visitor Visitor { get; set; }

/// <summary>
/// Post操作
/// </summary>
public void OnPost(Visitor visitor)
{
    this.Method = "Post";
    this.Visitor = visitor;
}

对Visitor字段使用了BindProperty特性,表明这个字段进行绑定操作。

对页面进行修改:

<form method="post">
    <p>
        <label>姓名:</label>
        <input type="text" asp-for="Visitor.Name" />
    </p>
    <p>
        <label>邮箱:</label>
        <input type="text" asp-for="Visitor.Email" />
    </p>
    <input type="submit" value="提交" />
</form>

刷新页面,填写相应的信息,随后点击提交按钮,OnPost方法可以正常接收到参数,更新后的页面也可以带出刚才提交的数据。

添加数据验证

public class Visitor
{
    [Required]
    [StringLength(20, MinimumLength =5)]
    public string Name { get; set; }

    [Required]
    [EmailAddress]
    public string Email { get; set; }
}

使用DataAnnotations对Visitor类中的字段进行标注。然后在OnPost中进行验证:

/// <summary>
/// Post操作
/// </summary>
public IActionResult OnPost()
{
    if (!ModelState.IsValid)
    {
        return Redirect("~/HelloWorld");
    }

    this.Method = "Post";
    return Page();
}

此时,如果提交的数据不能通过验证,则页面跳转到Get请求。

原文地址:https://www.cnblogs.com/youring2/p/8687005.html

时间: 2024-10-16 15:57:28

ASP.NET Core使用Razor页面的相关文章

Asp.net core中由于页面编码导致的中文乱码

问题描述 最近使用asp.net core写了一个简单的网站,在windows系统下完全没有出现问题.后来在linux系统中搭建了docker,并且在linux中自动使用git获取源码,编译,部署一条龙自动化.结果发现一个奇怪的现象:在控制器的代码中赋值中文给view model,页面显示正常.但如果是在view model中定义中文,页面中的中文会乱码. 原因 根据现象,第一时间想到的是,中文来源的编码出现问题.后来发现因为view model的cs文件都用了gb2312编码了.源码在linu

Asp.Net Core Mvc Razor之RazorPage

在AspNetCore.Mvc.Razor命名空间中的RazorPage继承RazorPageBase,并定义的属性为: HttpContext Context 表示当前请求执行的HttpContext RazorPageBase定义为抽象类,并继承了接口:IRazorPage IRazorPage接口定义属性如下: ViewContent ViewContent 获取或设置渲染视图的视图上下文 IHtmlContent BodyContent 获取或设置正文内容 bool IsLayoutBe

ASP.NET Core 中文文档 第四章 MVC(3.2)Razor 语法参考

原文:Razor Syntax Reference 作者:Taylor Mullen.Rick Anderson 翻译:刘怡(AlexLEWIS) 校对:何镇汐 什么是 Razor? Razor 是一种基于服务器端代码的可以转换为网页的标记语法.Razor 语法包括 Razor 标记.C# 和 HTML 组成.包含 Razor 的文件通常后缀名为 .cshtml . 渲染 HTML Razor 的默认语言是 HTML.从 Razor 渲染为 HTML 和直接一个 HTML 文件没啥区别,这种 R

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

介绍 ASP.NET Core 中的 Razor Pages 原文地址:Introduction to Razor Pages in ASP.NET Core         译文地址:介绍 asp.net core 中的 Razor Pages          翻译:ganqiyin Razor Pages 是 ASP.NET Core MVC 的一个新功能,可以让基于页面的编程方案更容易,更高效. 如果您正在寻找使用 Model-View-Controller 的教程,请参阅ASP.NET

asp.net core 系列 7 Razor框架路由(上)

一.概述 在上二篇中,主要是介绍了asp.net core mvc中路由的使用,这篇继续介绍路由在ASP.NET Core Razor中的使用.Razor Pages应该使用默认的传统路由,从应用程序的Pages文件夹中提供命令资源.还可以使用其他约定来自定义 Razor Pages 路由行为. 在ASP.NET Core MVC 中是使用路由中间件来匹配传入请求的 URL 并将它们映射到操作(action).而ASP.NET Core  Razor使用页面路由和应用模型提供程序约定,来控制 R

ASP.NET Core 入门教程 7、ASP.NET Core MVC 分部视图入门

原文:ASP.NET Core 入门教程 7.ASP.NET Core MVC 分部视图入门 一.前言 1.本教程主要内容 ASP.NET Core MVC (Razor)分部视图简介 ASP.NET Core MVC (Razor)分部视图基础教程 ASP.NET Core MVC (Razor)强类型分部视图教程 2.本教程环境信息 软件/环境 说明 操作系统 Windows 10 SDK 2.1.401 ASP.NET Core 2.1.3 IDE Visual Studio Code 1

【基础版限时免费】致敬WebForms,ASP.NET Core也能这么玩!

ASP.NET WebForms ASP.NET WebForms 随着微软 2000 年的 .Net Framework 一起发布,至今也将近 20 年的时间.相信很多人和我一样,对 WebForms 有着割舍不掉的感情, 直至今日 WebForms 仍然在管理系统快速开发领域有着不可替代的作用! 基于 ASP.NET WebForms 的 FineUI(开源版)在结束了 9 年 130 个版本的迭代后,继任者 FineUIPro(企业版)也持续了 5 年 30 多个版本的迭代,目前已经非常成

快速搭建CentOS+ASP.NET Core环境支持WebSocket

以前用python,go尝试在linux下做web服务,python没有强类型支持与高性能,go又没有很好的集成开发环境(还有强迫症的语法),回头看了几次.net,都没有时间尝试,现终于实现了这些想法,与大家分享.做web大项目,做工程,必须要有称手的工具帮我调试.测试.开发.工程化很重要,VS是一个称职好选手. 环境:CentOS 7.x,.net core 2 以下.net core 2安装操作为官方方法.如果你使用Docker,那么更简单了,只需要docker pull microsoft

学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面

学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目基本页面 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面 上一篇文章中我们学习了列表页面的结构,@page与@model两个关键Razor指令,以及页面布局应该修改哪里.这一篇文章我们来