zoukankan      html  css  js  c++  java
  • ASP.NET Core – MVC vs Razor Page

    前言

    早年只有 MVC, Razor Page 是后来才出现的.

    一开始其实我很看不起 Razor Page, MVC 能做的东西为什么要搞多一个 Razor Page 来做呢? 

    但我还是尝试用了起来, 这篇就聊一下 2 者的使用体验.

    相似之处

    2 者都有 .cshtml 来写 html 

    2 者都有 .cs 来写 c# (当然你要在 .cshtml 写也不是不可以)

    区别

    我个人感觉最大的区别就是在 route 的匹配上.

    MVC 的流程是, URL -> Controller (.cs) -> View (.cshtml)

    URL 寻找 Controller 有一个 mapping 的概念 (通常在 startup 配置)

    Controller 寻找 View 又有一个 mapping (default 是 2 个 folders, 一个是 Controllers, 一个是 VIews, 这个匹配方式是可以换的)

    Razor 的流程是 URL -> .cshtml -> Model (.cs)

    URL 寻找 .cshtml (default 是依据 folder 结构, 这个是可以换的)

    找到 .cshtml 之后再链接到 Model (.cs)

    使用体验

    如果是做网站的话,我会比较喜欢用 folder 的结构, 所以 razor page 更加合适.

    就有点回到以前写 .html 的那种感觉. 很直观简单. 

    我目前只有一种情况是需要用到 MVC 的. 就是做 404 页面的时候

    因为我有做 amp page, 但是 UseStatusCodePageWithReExceute 只能静态的写一个路径

    app.UseStatusCodePagesWithReExecute("/NotFound");

    用 Razor Page 的话, 这个 path 会直接找到 .cshtml, 那就完了. 

    因为 amp/whatever 必须返回 amp/NotFound 内容

    而 /whatever 则是去到 /NotFound

    这个时候最好的解决方法就是用 MVC, 通过 Controller 就可以选择要返回 amp view 还是 normal view 了.

    最后, 其实 MVC 和 Razor Page 并不会冲突, 是可以一起用的哦.

  • 相关阅读:
    为了抓包某APP所做的尝试(to be continued)
    VirtualBox的使用的一些Tips 网络配置|硬盘扩充
    斜线和反斜线简要历史,为什么windows和unix采用不同的路径分隔符
    求出二维数组主对角线、次对角线以及周边元素之和
    C#计算两个时间的时间差,精确到年月日时分秒
    C#获取MP3,WMA信息
    C#窗体随意移动
    DEV GridControl小结
    DEV 皮肤的使用
    C#窗体阴影
  • 原文地址:https://www.cnblogs.com/keatkeat/p/15440637.html
Copyright © 2011-2022 走看看