MVC:模式和框架

更多
2019年08月01日 11点47分 作者:叶飞 修改

新建一个MVC项目

solution中添加项目,选择:.NET Framework -> MVC:


和RazorPage的对比

项目结构:

MVC项目
RazorPage项目
Properties
AssemblyInfo.cs
launchSettings.json
依赖/引用
References
Dependencies和packages.config
启动
Global.asax和App_Start
Program.cs和Startup.cs
静态(文件)资源
Content(CSS)/Scripts/fonts
wwwroot
核心
Controllers/Models/Views
Pages
项目配置
web.config
appsettings.json



运行时:


MVC项目
RazorPage项目
修改项目中的
.cs文件之后:
需要手动编译才能生效
可自动编译
.cshtml文件
自动生效
可自动编译
Application_Start()/StartUp()
需要重启IIS
可自动编译
指定启动路径:
可以
不可以
演示:在程中也会反复呈现……




MVC模型

提示:和RazorPage中的ViewComponent非常类似

    public class RegisterController : Controller
    {
        // GET: Register
        public ActionResult Index()
        {
            IndexModel model = new IndexModel
            {
                UserName = "wpz",
                Password = "1234"
            };
            return View(model);
        }
    }
@model _17bangMVC.Models.Register.IndexModel

        <label>用户:</label> @Model.UserName <br />
        <label>密码:</label> @Model.Password <br />

断点演示:程序运行,依次击中:

  1. Controller-Action
  2. Model(简单赋值)
  3. View

对比:RazorPage的


MVVC模式




Controller

所有Controller都:

  • 通常都放置在Controllers文件夹下(试了下,也可以放在其他地方,^_^)
  • 继承自Controller基类:里面保存了Session/Request/Response等常用属性和Redirect()/View()/Json()等常用方法


Model

贫血/充血模式:通常使用贫血模式,Model就是一个DTO,业务逻辑由额外的entity完成

由controller传到view:

  • 通过View()的参数
  • View中使用@mode引用,使用@Model取值

从view传到controller:

  • 通过Action()参数
  • ASP.NET MVC自动绑定


View

.cshtml文件,同:ASP.NET Core:Layout和section,除了:

没有@page指令

MVC中.cshtml文件中能有@page声明,所以被称之为View;View不能 直接处理HTTP请求=> 通过MVC框架呈现

在RazorPage Application里有@page  => 可以作为Page,被称之为“页面”(Page)



作业

建立一个MVC项目:17bangMVC
源栈培训 ASP.NET MVC
赞: 198 踩: 9

打赏
已收到打赏的 帮帮币

你的 打赏 非常重要!
为了保证文章的质量,每一篇文章的发布,都已经消耗了作者 1 枚 帮帮币
没有“帮帮币”,作者无法发布新的文章。

全系列阅读
评论 / 0

ASP.NET


RazorPage

微软推荐的、最新的、基于Razor页面和.NET core的新一代Web项目开发技术,包括Razor Tag Helper、Model绑定和Validation、Session/Cookie、内置依赖注入等……

MVC

过去两年间最流行的、基于.NET Framework和MVC模式的ASP.NET MVC框架,主要用于讲解安全、性能、架构和各种实战功能演示……

其他Web项目

包括WebForm和WebApi

全部
关键字



帮助

反馈