.NET Core第7天_MVC专案跟空专案创建出来比较_跟.net MVC专案做小比较

https://ithelp.ithome.com.tw/upload/images/20210907/20107452mKB0SGLNGY.png

https://ithelp.ithome.com.tw/upload/images/20210907/20107452VUAQd2WBN2.png

https://ithelp.ithome.com.tw/upload/images/20210907/20107452CHla7ct3Dd.png

这是.net core 空专案创建出来预设项目

https://ithelp.ithome.com.tw/upload/images/20210907/20107452iBauwPfasQ.png

.NET Core MVC专案创建方式
https://ithelp.ithome.com.tw/upload/images/20210907/201074521KX2watoqM.png

https://ithelp.ithome.com.tw/upload/images/20210907/20107452GM4bVk4t0H.png

可以看到预设直接选择MVC类型专案会帮我们自动建立出Model,Controller,View的folder
当中的HomeController.cs

using AppNetCore5MVC.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;

namespace AppNetCore5MVC.Controllers
{
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;

        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }

        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Privacy()
        {
            return View();
        }

        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }
}

跟以前的asp.net mvc 专案中Controller跟View互动有点类似
差别在於.net core MVC的Action是用IActionResult
而.net MVC以前是用ActionResult

https://ithelp.ithome.com.tw/upload/images/20210907/20107452cpvBY721J2.png

而在View目录下也是一样的cshtml
也是跟以前.net mvc一样的ViewData使用方式

这里我们就来练习自行创建Controlller跟相应的View、Model暖个身

对Controller目录右键->控制器(Ctrl-M、Ctrl-C )

暂时先选空白的就好了

https://ithelp.ithome.com.tw/upload/images/20210907/20107452qQq3lTJ8vX.png

更名一下(一样维持Controller後缀)

https://ithelp.ithome.com.tw/upload/images/20210907/20107452RieVgkJu1g.png

https://ithelp.ithome.com.tw/upload/images/20210907/20107452PUU5BFqx0z.png

就可以看到刚串见出来的空白控制器BookController.cs

using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace AppNetCore5MVC.Controllers
{
    public class BookController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }
    }
}

所以基本上如果要访问到导向至Book的Index画面
mvc中路由机制会是要这样子访问
http:///book/index

这里创建对应的View
切至你命名的控制器类别(BookController.cs)对该Action方法 右键->新增检视

https://ithelp.ithome.com.tw/upload/images/20210907/20107452WE6NFlWbyp.png

https://ithelp.ithome.com.tw/upload/images/20210907/20107452hp9DgpIO6s.png

就可自动产生出View

https://ithelp.ithome.com.tw/upload/images/20210907/20107452tNgLfWaPjS.png

这里稍微调整一下产生的Index 比较好识别

https://ithelp.ithome.com.tw/upload/images/20210907/201074524VKQj27iXb.png

https://ithelp.ithome.com.tw/upload/images/20210907/20107452qWjl7bZiZ6.png

在预设专案样本中存放在Shared目录中的_Layout.cshtml
为主要的网站导览母页
这里比照上面导向Home对应的View方式扩增Book的子页

https://ithelp.ithome.com.tw/upload/images/20210907/20107452aKvbPzMAi8.png

基本上就能够看到导向到Book Index页面的效果

https://ithelp.ithome.com.tw/upload/images/20210907/20107452gQIBDXVI67.png

这里可以尝试在新增一个Action不再画面上显示的
https://ithelp.ithome.com.tw/upload/images/20210907/20107452xXbml95mGm.png

https://ithelp.ithome.com.tw/upload/images/20210907/20107452kb64DfaIVu.png

https://ithelp.ithome.com.tw/upload/images/20210907/20107452Lc978EFzl9.png

在运行时就可以再次验证路由的机制
https://ithelp.ithome.com.tw/upload/images/20210907/20107452yBGTee6Q8q.png

有Controoler跟View了就来探讨Model吧
其实Model跟.net mvc 以前的Model也是差不多概念
也有区分成所谓的Detail(单一笔的细节)跟List(多笔的清单)

下一篇先来介绍如何简单导入MVC前置动作

本文同步发布至个人部落格
https://coolmandiary.blogspot.com/2021/03/net-coremvcnet-mvc.html


<<:  [GAS] Genero GAS 控制台网页版 (3.20後套件提供)

>>:  Day 02:专案01 - 超简单个人履历01 | HTML简介

Day10 为什麽电脑懂我的指令?函数宣告 part2

从上一回的探索中,我已经大概知道怎麽自订 CC: Tweaked 电脑开机跑的程序 也在过程中慢慢熟...

创建App-(老师版)作业派发

创建App-(老师版)作业派发 今天来建设老师版的功能,作业派发。此界面会显示每一位学生的头像、名称...

JS 物件属性:属性的特徵 DAY68

Object.defineProperty 定义物件属性,调整属性特徵(请牢记!!) // 定义物件...

[Day25] Tableau 轻松学 - TabPy 使用方法 2

前言 直接将所有 Python 程序写在工作簿内的第一种 TabPy 使用方法我们已经学会了,但这种...

[Day24] Rocket Web 框架 (Part 1)

今天要讲的是 Rocket 那我先简述一下什麽是 Rocket Rocket 是一个致力於实现 快速...