zoukankan      html  css  js  c++  java
  • ASP.NET Core MVC学习笔记(二)

    一、应用程序分层设计分为用户展现层(MVC),业务逻辑处理层,数据访问读取层。

    浏览器链接-(request)0-》controller-->model-->data source
    浏览器<--controller-->view
    路由规则将u'r'l映射到controller action方法

    在asp.net core 中安装MVC
    步骤1:将所需的mvc服务添加到asp.net core中的依赖注入容器中

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }

    步骤2:添加MVC中间件到我们的请求处理管道中

    app.UseMvcWithDefaultRoute();

    AddMvcCore()方法只会添加最核心的MVC服务,AddMvc()方法添加了所有必须的MVC服务,AddMvc()方法会在内部调用AddMvcCore()方法。

    二、ASP.NET Core MVC中的Model
    Model=一个集合类=data(数据)+业务数据
    ASP.NET Core依赖注入
    ASP.NET Core依赖注入容器注册服务
    AddSingleton(),AddTransient(),AddScoped()

    如:

    services.AddSingleton<IStudentRepository,MockStudentRepository>();

    services.AddTransient<Db>();
    services.AddTransient<BannerService>();

    依赖注入的亮点:低耦合;提供了高测试性,使单元测试更加的容易

    三、ASP.NET Core MVC中的Controller
    当来自浏览器的请求到达我们的应用程序时,作为MVC设计模式中的控制器,它处理传入的http请求并响应用户操作。
    控制器构建模型(Model)
    如果我们正在构建API,则将模型数据返回给调用方;或者选择“View视图”并将模型数据传递到视图,然后视图生成所需的HTML来显示数据。

    四、ASP.NET Core MVC中的View
    视图文件具有.cshtml的扩展名,
    视图文件是带有嵌入Razor标记的HTML模板,
    可能包含Controller提供给它的Model的业务数据。

    自定义视图发现
    view()或view(object model):查找与操作方法同名的视图文件
    view(string viewName):可查询自定义名称的视图文件,可以指定视图名称或视图文件路径,视图文件路径可以是绝对路径,也可以是相对路径,绝对路径必须指定.cshtml扩展名,使用相对路径时,不用带扩展名.cshtml。
    view(string viewName,object model)

    五、从控制器传递数据到视图
    将数据从控制器传递到视图的方法:ViewData,ViewBag,强类型视图。
    ViewData:是弱类型的字典(dictionary)对象,使用string类型的键值,存储和查询viewdata字段中的数据,运行时动态解析,没有智能感知,编译时也没有类型检查。

    Controller

    ViewData["PageTitle"] = "学生详情";
    ViewData["Student"] = model;
    .cshtml
    @using xxxx.Models
    <h3>@ViewData["PageTitle"]</h3>
    @{
    var student = ViewData["Student"] as Student;
    }
    <div>
    姓名:@student.Name
    </div>

     Controller

    //将PageTitle和Student模型对象存储在ViewBag
    //我们正在使用动态属性PageTitle和Student
    ViewBag.PageTitle = "学生详情";
    ViewBag.Student = model;

    .cshtml
    <h3>@ViewBag.PageTitle</h3>
    <div>
    姓名:@ViewBag.Student.Name
    </div>

    ViewData和ViewBag对比
    ViewBag是ViewData的包装器
    它们都创建了一个弱类型的视图
    ViewData使用字符串键名,来存储和查询数据。
    ViewBag使用动态属性来存储和查询数据。
    均是在运行时动态解析,均不提供编译时类型检查,没有智能提示。
    首选方法是使用强类型模型对象,将数据从控制器传递到视图。

    ASP.NET Core MVC中使用强类型视图
    创建强类型视图
    在视图中使用@model指令指定模型类型
    @model xxxx.Models.Student
    使用@Model访问模型对象属性
    <div>
    姓名:@Model.Name
    </div>
    <div>
    邮箱:@Model.Email
    </div>
    强类型视图提供编译时类型检查和智能提示

    ASP.NET Core MVC中的ViewModel(类似于DTO)
    模型对象无法满足视图所需的所有数据时,就需要使用ViewModel了

    1 //实例化HomeDetailsViewModel并存储student详细信息和pageTitle
    2 HomeDetailsViewModel homeDetailsViewModel = new HomeDetailsViewModel()
    3 {
    4     student = _studentRepository.GetStudent(2),
    5     pageTitle = "学生详细信息"
    6 };

    六、ASP.NET Core MVC中的布局页面的使用
    让web应用程序中所有的视图保持外观一致性。布局视图看起来像ASP.NET Web Form中的母版页。布局视图也具有.cshtml扩展名。在ASP.NET Core MVC中,默认情况下布局文件名为_Layout.cshtml。布局视图文件通常放在“Views/Shared”的文件夹中。在一个应用程序中可以包含多个布局视图文件。

    布局视图文件中的Sections使用
    布局试图中的节点,提供了一种方法来让某些页面元素有组织的放置在一起。
    Section可以强制性使用或者为可选择性使用。
    需要渲染Section的时候调用RenderSection()方法。
    母版页
    @RenderSection("Scripts", required: false)
    .cshtml
    @section Script{
    <script src="~/js/CustomScript.js"></script>
    }

    ASP.NET Core MVC中的_ViewStart.cshtml
    ViewStart中的代码会在单个视图中的代码之前执行。
    移动公用代码到ViewStart视图中,如给布局视图文件设置属性。
    ViewStart减少了代码冗余,提高了可维护性
    ViewStart文件支持分层。

    ASP.NET Core MVC中的_ViewImports.cshtml
    _ViewImports.cshtml文件通常放在Views文件夹中。
    ViewImports用于包含公共命名空间。
    需要使用@using指令包含公共命名空间。
    _ViewImports文件还支持以下指令:@addTagHelper,@removeTagHelper,@tagHelpPrefix,@model,@inherits,@inject。
    _ViewImports文件支持分层。

  • 相关阅读:
    学习笔记——Maven实战(九)打包的技巧
    学习笔记——Maven实战(八)常用Maven插件介绍(下)
    学习笔记——Maven实战(七)常用Maven插件介绍(上)
    学习笔记——Maven实战(六)Gradle,构建工具的未来?
    学习笔记——Maven实战(五)自动化Web应用集成测试
    在Google的GKE上创建支持Internal Load Balancer的Service
    Bash命令查找本机公网IP
    Google Cloud IAM中添加自定义域名
    Debian上启用Apache2服务
    Google Cloud VM上在线扩硬盘
  • 原文地址:https://www.cnblogs.com/Lvkang/p/11718413.html
Copyright © 2011-2022 走看看