ASP.NET CORE 入门教程(附源码)

ASP.NET CORE 入门教程 第一课 基本概念

基本概念

Asp.Net Core Mvc是.NET Core平台下的一种Web应用开发框架

符合Web应用特点

.NET Core跨平台解决方案

MVC设计模式的一种实现

环境准备

安装最新版Visual Studio 2017

安装最新版.NET Core Sdk

第二课 控制器的介绍

控制器定义方式:

命名以Controller结尾

使用ControllerAttribute标注

public class TestController : Controller { } [Controller] public class Test : Controller { }

默认路由规则

域名/控制器类/方法

{Domain}/{Controller}/{Action}

数据形式

QueryString: ?name=zhangsan&age=22

Form

Cookie

Session

Header

HttpRequest

HttpRequest 是用户请求对象

提供获取请求数据的属性

Cookies,Headers,Query,QueryString,Form

public IActionResult Hello() { // Query var name = Request.Query["name"]; // QueryString var query = Request.QueryString.Value; // Form var username = Request.Form["username"]; // Cookies var cookie = Request.Cookies["item"]; // Headers var headers = Request.Headers["salt"]; return Content("Hello"); }

HttpContext

HttpContext是用户请求上下文

提供Session属性获取Session对象

Session.Set 设置

Session.Remove 移除

Session.TryGetValue 获取数据

public IActionResult Hello() { // byte[] HttpContext.Session.Set("byte", new byte[] { 1, 2, 3, 4, 5 }); var bytes = HttpContext.Session.Get("byte"); // string HttpContext.Session.SetString("name", "tom"); var name = HttpContext.Session.GetString("name"); // int HttpContext.Session.SetInt32("id", 20); var id = HttpContext.Session.GetInt32("id"); HttpContext.Session.Remove("name"); HttpContext.Session.Clear(); return Content("Hello"); }

数据绑定

把用户请求的数据绑定到控制器方法的参数上

支持简单类型与自定义类型

绑定规则是请求数据名称与参数名称一致

如查询字符串key名称跟参数一致

Form表单名称跟参数一致

public IActionResult Hello(RequestModel request,int? age) { // 查询字符串 var test = Request.Query["test"]; // 简单类型 var userAge = age; // 自定义类型 var name = request.Name; return Content("Hello"); } public class RequestModel { public string Name { get; set; } }

内容补充

如果以Controller结尾的都是控制器,那如果程序里面由一些业务命名的时候也是以Controller结尾,怎么办?

NonControllerAttribute

/// <summary> /// 拍卖师控制类 /// </summary> [NonController] public class AuctionController { }

常用特性

特性 数据源
FromHeaderAttribute   请求头数据  
FromRouteAttribute   路由数据  
FromBodyAttribute   请求体  
FromFormAttribute   表单数据  
FromQueryAttribute   查询字符串  
FromServicesAttribute   服务注册  
public IActionResult Say( [FromForm]string name, [FromQuery]int age, [FromHeader] string salt, [FromBody] string content ) { return View(); }

特性参数

通过特性修饰参数来影响绑定逻辑

灵活扩展

IActionResult

动作结果接口

具体实现

JsonResult:返回JSON结构数据

RedirectResult:跳转到新地址

FileResult:返回文件

ViewResult:返回视图内容

ContentResult:文本内容

第三课 视图与表单

数据传递

ViewData

ViewBag

tempData

Model

Session

Cache

ViewData ViewBag
键值对   动态类型  
索引器   ViewData的封装  
支持任意类型   动态属性  
TempData Cache Session
视图级别   应用程序级别   会话级别  
只允许消费一次   服务器端保存   服务器端保存  
可多次赋值   可设置有效期   键值对形式  
键值对形式   键值对形式    

Cache

与.NET Framework时代不同,一种全新实现

IMemoryCache接口

依赖注入方式获取

IMemoryCache.Get/Set操作数据

[Controller] public class Test : Controller { private readonly IMemoryCache _cache; public Test(IMemoryCache memoryCache) { this._cache = memoryCache; } public IActionResult ReadCache() { _cache.Set("name","tom"); _cache.Get("name"); _cache.Set("age",30); _cache.Get("age"); User tom = new User(){ Name = "admin",Pwd = "123456"}; _cache.Set<User>("user",tom); _cache.Get<User>("user"); return Content("ok"); } } public class User { public string Name { get; set; } public string Pwd { get; set; } }

ViewStart

以_ViewStart.cshtml命名,固定名称,不能更换

一般放在视图所在目录的根目录下

自动执行,无需手工调用

不要再ViewStart中做大量的业务操作

ViewImport

以_ViewImport.cshtml命名,固定名称,不能更换

只作引入操作

一般放在视图所在目录的根目录下

自动执行,无需手工调用

视图中可以使用@using关键字引入所需命名空间

通过ViewImport做全局性的命名空间引入,减少在每个页面中引入的工作量

第四课 数据验证

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyzys.html