为了账号安全,请及时绑定邮箱和手机立即绑定

打造你的第一个ASP.NET Core MVC网站应用

难度中级
时长 4小时10分
学习人数
综合评分9.50
37人评价 查看评价
9.8 内容实用
8.9 简洁易懂
9.8 逻辑清晰
  • 全部笔记:

    start up :项目运行配置 管理依赖注入 中间间(configure-》Middelware) 以及处理请求通道(由IApplicationBuilder类创 建)

    Program.cs-》

    CreateDefaultDuilder(args)->1.加载主机和应用得配置信息

    2.配置日志记录

    3.设置web服务器

    4.设置asp.net core的应用形式

    Asp.net MVC routing系统

     1.无需文件真正保存在硬盘上

    2.访问文件无需后缀

    3.URL结构与服务器文件夹结构无关

    4.url将会被映射给Controller控制器来处理请求,不会映射给静态文件

    http请求交给服务器-》controller来进行活动 之后再有controller响应http请求

    URL:{域名}/Controller/Action

    具体信息又分段路由segments(自定义路由)来处理

    URL:{域名}/Controller/Action/{id}->action 函数的参数来进行页面处理获得数据输出 

    如何定义URL和Controller之间的映射规则?

    默认路由系统。 app.UseMvcWithDefaultRoute();

    {域名}/{Controller=Home}/{Action=index}/{Value?}

    自定义默认路由:

    使用中间件:

    app.UseMvc(routes=>routes.MapRoute(name:"default",template:"{controller=Home}/{Action=index}/{Value?}"))

    ==app.UseMvcWithDefaultRoute();

    在ASP.Net Mvc有两种路由模式

    1.传统路由(使用路由表) Concentional routing

    2.特性注释路由 Attribute routing 

    Conventional Routing 

    1.URl 被分解为Controller和action两个部分 

    2.使用路由表(routing table )来设置路由规则

    例如:rotes.MapRoute(name:"default",templete:"{controller=Home}/{action=index}")

    Atrtibute Routing:

    1.使用简单,不再需要路由表,只要controller和action代码中直接使用

    attribute来定义路由

    Example:

    [Route("[controller]/[action]")]

    public class HomeController:Controller

    {

    //get :/<controller>/

    public Stirng Index()

    {

    return "Hello From Home";

    }

    }

    路由中间件:帮助我们解析URL,并映射给相对应得controller和action

     //

    Attribute Routing :

    可以帮助我们用AOP 面向面向切面得形式可以为每一个controller甚至action

    单独定义路由。Route("[controller]/[index]")

    //

    app.UseMvc(传入lamda表达式来设定自定义路由)

    什么是MVC:

    1.软件工程的架构方式

    2.模型,视图和控制器

    3.分离业务操作,数据显示,逻辑控制 


    视图:用户交互界面 展示输入,不操作数据,接受用户数据

    模型:MVC架构得核心,表示业务模型或者数据模型,程序的业务逻辑。

    如:算法的实现,数据的管理,输出对象的封装等等

    控制器:接受用户得输入,并调用模型和视图去完成用户的请求处理

    本身不处理数据

    三层架构:

    UI层 BLL 业务逻辑层,处理核心业务以及数据封装

    DAL 表示数据访问 

    三层架构面向结构编程,而三个层级之间的完全解耦,完全可替代

    MVC得每个部分都是紧密结合的,它的核心并不是解耦,而是重用。


    MVC的优点:

    耦合性低

    可复用性高

    可维护性高

    缺点:

    定义不明确,学习曲线陡

    结构复杂

    数据流动效率低 

    ----控制器的工作原理--

    Action 函数:

    处理请求

    返回特殊乐星IActionResult

    默认http请求方式为Get

    可接受url中的参数

    Action:Post

    如何处理POST请求:

    [HttpPost]

    public ActionResult Edit(int id,IFormCollection collection)

    {

    try

    {

      return RedirectionToAction(nameof(Index));  

    }

    catch

    {

      return View();

    }

    }

    什么是模型?

    1.其实是一个类 映射数据库,对象化数据。

    2.获取数据,更新数据,传递数据,保存数据等

    3.处理业务逻辑,被视为BLL层

    4.View Model与视图数据绑定

    不过,定义不明确,经验很重要

    可以是一个简单的poco类 也可以是一复杂的充血性领域模型(rich Domain Model)

    模型的业务逻辑:

    函数方法等,不会映射数据库,但会对数据进行更新。

    举例:

    模型属性:

    public int Id{get;set;}

    public string FirstName{get;set;}

    public string UserName{get;set;}

    public string ShortDescription{get;set;}

    public decimal Phone{get;set;}

    public string Email{get;set;}

    public bool IsEmailConfirm{get;set;}

    业务逻辑:

    public void ConfirmEmail(string token)

    {

    if(isTokenValid)

    {

    this.IsEmailConfirm=true;//save to database

    }

    }

    数据持久化模式:repository仓库模式

    对象化数据,不用管数据是怎么保存的

    使用仓库接口

    举例:

    public interface INoodleRespositoy

    {

      IEnumerable<Noodle> GetNoodles();

     Noodle GetNoodleById(int ID);

    }

    使用模型和数据仓库的好处:

    1.业务逻辑与数据模型紧密耦合,减少分层,降低代码数量

    2.完全剥离数据库业务,程序员可以更专注于实现业务逻辑

    3.面向对象编程,数据转化为对象,更符合程序员的思考方式

    视图模型 ViewModel

    ViewModel中的数据会与UI界面双向绑定,一旦ViewModel

    中的数据发生任何变化,结果都会立即反应在UI界面中。

    特点:

    1.依然是模型 

    2.用视图模型替代数据上下文

    3.poco(plain old class object),不包含方法的简单类

     MVVM:model-view-view Model

    为什么要使用ViewModel

    1.减少页面逻辑的复杂度

    2.处理页面的数据逻辑,管理页面状态

    3.各种组件也可以相对解耦,既有利于团队协作与日后维护

    管理前端框架工具:

    项目名称(右击)-》client-site Library-》libman

    Asp.Net Core Identity 

    1.Password Hashing 

    2.Tokenization

    3.TwoFacts Authentication

    4.Authentication

    5.Authorization

    6.External Login 第三方验证 


    查看全部
    5 采集 收起 来源:课程总结

    2020-03-21

  • 1-1知识点

    基础知识:.net core / 环境设置

    asp mvc :mvc架构 / 路由系统 / razor

    entity framework:仓库模式 / code first / 映射数据 / crud

    身份认证:认证 / 授权


    查看全部
    2 采集 收起 来源:课程总览

    2020-02-13

  • 查看全部
    2 采集 收起 来源:课程总览

    2019-11-10

  • <h4><a href="http://note.youdao.com/s/5SDSS5Dl" title="markdown笔记">Controller</a></h4><hr /><ul class="list-paddingleft-2"><li><p>1.默认为GET请求</p></li><li><p>2.IActionResult可以返回任何类型,自动进行映射</p></li><li><p>3.POST请求使用[HttpPost]</p></li></ul><hr /><h4><a href="#%E5%91%BD%E5%90%8D"></a>命名</h4><p>1.命名为XXX+Controller,用此方法会默认认为是Controller</p><pre>using System;namespace ShopMail.controllers{    public class EmptyClassController      {        public EmptyClassController()         {         }        //访问的方法         public String Index() {            return "Hello";         }              } }</pre><p>2.如果使用注入方式注入也可以实现Controller</p><pre>using System;//使用注入必须导入包using Microsoft.AspNetCore.Mvc;namespace ShopMail.controllers{     [Controller]    public class EmptyClass     {        public EmptyClass()         {         }        //访问的方法         public String Index() {            return "Hello";         }              } }</pre><p>3.如果继承Controller类也可以实现Controller</p><pre>using System;//使用继承必须导入包using Microsoft.AspNetCore.Mvc;namespace ShopMail.controllers{    public class EmptyClass : Controller     {        public EmptyClass()         {         }        //访问的方法         public String Index() {            return "Hello";         }              } }</pre><hr /><p>方式2和方式3的区别在于</p><ul class="list-paddingleft-2"><li><p>如果使用方式2较方式3 使用this关键字将不会有很多父类方法</p></li><li><p>方法3中 会得到很多父类的辅助方法</p></li></ul><h5><a href="#%E5%A4%96%E9%83%A8http%E8%AE%BF%E9%97%AE%E4%B8%8D%E8%83%BD%E4%BD%BF%E7%94%A8private%E4%BF%AE%E9%A5%B0"></a>外部http访问不能使用private修饰</h5><h4><a href="#actionresult"></a>ActionResult</h4><ul class="list-paddingleft-2"><li><p>返回文字</p></li></ul><pre>public ActionResult Hello() {    return Content("Hello ActionResult"); }</pre><ul class="list-paddingleft-2"><li><p>返回视图</p></li></ul><pre> public ActionResult Contact(){    return View(); }</pre><ul class="list-paddingleft-2"><li><p>macOS需要手动创建Views目录,并创建类名目录/方法名.cshtml 即为</p></li></ul><pre>Views/Test/contact.cshtml</pre><p><br /></p>
    查看全部
  • 两种路由模式

    • 传统路由(使用路由表)Conventional routing

    • 特征注释路由 Attribute routing


    传统路由(使用路由表)Conventional routing

    路由表配置

    routes.MapRoute(    name:"default",    templete:"{controller=Home}/{action=Index}");

    特征注释路由 Attribute routing

    [Route("api/UploadFiles")]public Hashtable UploadFiles(List<IFormFile> files){
            
    }

    使用

    添加路由配置 .net core 3.1

    ConfigureServices方法中-services.AddMvc(option => option.EnableEndpointRouting = false);//注册MVC同时禁用endpointConfigure方法中-app.UseMvcWithDefaultRoute();

    特征类型

    namespace ShopMail.controllers{
        [Route("[controller]/[action]")]    public class HomeController : Controller
        {        public String hola()
            {            return "Hola";
            }
        }
    }会映射到https://localhost:5001/home/hola

    传统路由

    Configure方法中-app.UseMvcWithDefaultRoute();

    新建controllers文件夹,并新建controller模版,访问路径为 会映射为 controller除去Controller的名字+对应方法名https://localhost:5001/home/hola

    吐槽下 慕课不支持markdown=。= 需要的朋友点击上面标题超链  如果有不对的地方,请指正 本人也在学习中....

    查看全部
    1 采集 收起 来源:Demo 添加路由

    2020-07-14

  • 一、将普通类变成controller的三种方式:

    1、直接在类名后面加Controller字样

    2、在类前添加属性[Controller]

    3、继承controller字样,类名后加:controller

    二、

    问:controlller和action的修饰public属性能不能改成private?

    答:不可以。对controlller而言,会直接报错;对action而言,运行时http不能从外部对改action进行访问

    三、

    对于action的return类型可以是ActionResult,它可以根据数据类型自动做类型转换,并且向外部发送合适的数据。

    return View()的时候可以根据一些约定来完成控制器和视图的绑定。

    对action右击建立视图

    查看全部
  • 默认路由利用{}的语法实现controller和action的通配

    可以根据命名规范自动地适配controller.cs文件中controller前的字段

    直接与URL进行映射。

    查看全部
  • program.cs

    主函数main里的CreateDefaultBuilder运行并创建了一个虚拟网站托管主机

    startup.cs

    在ConfigureServices方法中注入各种组件的依赖

    在Configure方法,配置http请求通道request pipline

    中间件Middelware是组装到应用管道中,用来处理请求和响应的软件

    查看全部
    1 采集 收起 来源:program与 startup

    2020-04-23

  • 如果你使用的是ASP.net core 3.0

    应当如下设置

    在Startup.cs文件中,将教程中的app.UseMvcWithDefaultRoute();修改为

    app.UseEndpoints(endpoints =>            
    {                
        endpoints.MapControllerRoute(                    
        name: "default",                    
        pattern: "{controller=Home}/{action=Index}/{id?}");            
    });


    查看全部
    1 采集 收起 来源:Demo 添加路由

    2020-04-18

  • 查看全部
    1 采集 收起 来源:课程总结

    2020-03-29

  • 。net core数据验证http://img1.mukewang.com/5e71eb4d0001a91003580160.jpghttp://img3.mukewang.com/5e71eb2a0001997c04930304.jpghttp://img1.mukewang.com/5e71eadc00013aa605020235.jpg

    查看全部
    1 采集 收起 来源:数据验证

    2020-03-18

  • admin管理员路由限制

    查看全部
  • ViewModel组合数据

    查看全部
    1 采集 收起 来源:View Model

    2020-01-19

  • 中间件/请求通道:

    1. 基本通过IApplicationBuilder创建

    2. 每个中间件都可以截获、修改、并且传递请求对象,输出响应对象

    3. 在特定情况下,某些中间件可以做短路处理,直接向前端输出相应对象

    查看全部
    1 采集 收起 来源:program与 startup

    2019-12-10

    • Nuget管理各种依赖,类似于Java的Maven,JavaScript的npm

    查看全部
    1 采集 收起 来源:创建实战项目

    2019-12-10

首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
1. 有一定C#基础 2. 熟悉前端开发技术(HTML、CSS、Javascript)
老师告诉你能学到什么?
1. 深入理解ASP .NET MVC 2. 理解mvc的路由系统 3. 建立数据模型 4. 学会依赖注入 5. 深入理解页面语言Razor 6. 使用Entity Framework Core持久化数据 7. 使用ASP .NET MVC来创建网站应用。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!