更新 : 2019-06-15

目前 razor page 在做 multiple form in one page 的时候有个大局限

就是无法使用多个 BindProperty

一旦多个,那么任何一个 form 提交都会把所有 model 进行 valid

那就坏掉了

refer :

https://stackoverflow.com/questions/48516547/how-to-implement-two-forms-with-separate-bindproperties-in-razor-pages

https://stackoverflow.com/questions/54068385/razor-pages-model-validation-fails-due-to-multiple-objects-sharing-parameters

没有去找 github issue 以后才看看吧。

目前的做法就不要使用 BindProperty, 代价就是前端无法用 c# binding form.

更新 2019-04-27

最近做了更多的 research 发现微软视乎有意发展 razor page.

razor page 的定位是 mvvm, 现在还有个叫 blazor 的东西, 类似用 c# + razor = react 的概念

从前就觉得 react 的 jsx 和 razor 差不多嘛.. 估计微软会往哪里走.

好处应该挺多的,毕竟就目前的技术来看,如果要搞个体验好的电商项目,没有用前端框架是不行的.

如果后端框架可以支持更多交互体验,把实现都封装起来, 一定有些项目是非常适合的.

所以现在开始认真学 razor page 咯.

razor page 其实没有什么特别神奇的功能, 只是调用起来不一样而已.

首先, 它是用来处理 page 的, 就是那种返回 html 的 page.

wei api 不算, 返回 file 也不在它的管辖内.

1. router

mvc <a asp-controller asp-action>

razor page <a asp-page asp-handler > , asp-page="Folder/File" 它是按路径的

2. action binding

mvc [FromBody] [FromQuery]

razor page 用的是 [BindProperty] , string value 匹配的是 query string

public class InputModel
{
public string code { get; set; }
} [BindProperty]
public InputModel data { get; set; } public void OnPost(string value)
{ } public void OnPostEdit(string value)
{ }

refer :

https://www.twilio.com/blog/introduction-asp-net-core-razor-pages

https://www.mikesdotnetting.com/article/327/customising-routing-conventions-in-razor-pages

razor page vs MVC

通常我们都是拿这 2 者做比较.

mvc 的做法是

route 匹配 controller action (一个 controller action 可以对多个 route template)

由 action 方法的 parameter 接受 inputModel 然后返回 view model

razor page 的做法是

route 匹配一个文件 cshtml 文件. (一个文件也可以对多个 route template, 要在 startup 弄)

这个文件有一个 .cs 对应, 你可以把它看成 controller

它不用 parameter 来接受 inputModel 而是用自身属性 + attribute [BindProperty] 来表示.

然后它本身的属性就是 viewmodel 了.

多个 action 的做法是通过 onPostAbcHandler onPostxyzHandler 来实现的.

玩玩了一下,觉得也没有特别高明之处. 尤其我的需求是要语言,需要一个文件对应多个 route template,这点并不给力.

比较厉害的地方应该只有一个,就是 folder 结构可以喜欢怎样开就怎样开吧. 这点我觉得比 mvc + ViewLocationExpanders 还要好一点点啦.

Asp.net core 学习笔记 Razor Page的更多相关文章

  1. ASP.NET Core 学习笔记 第一篇 ASP.NET Core初探

    前言 因为工作原因博客断断续续更新,其实在很早以前就有想法做一套关于ASP.NET CORE整体学习度路线,整体来说国内的环境的.NET生态环境还是相对比较严峻的,但是干一行爱一行,还是希望更多人加入 ...

  2. Asp.Net Core学习笔记:入门篇

    Asp.Net Core 学习 基于.Net Core 2.2版本的学习笔记. 常识 像Django那样自动检查代码更新,自动重载服务器(太方便了) dotnet watch run 托管设置 设置项 ...

  3. Asp.net core (学习笔记 路由和语言 route & language)

    https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.1 https://doc ...

  4. Asp.net core 学习笔记 (授权)

    更新 : 2018-11-24 记入一些思考 asp.net core + identity 的权限是这样的 user = 1 个登入账号 role = 1 个角色 (类似于公司里的一个职位) cla ...

  5. Asp.net Core学习笔记

    之前记在github上的,现在搬运过来 变化还是很大的,感觉和Nodejs有点类似,比如中间件的使用 ,努力学习ing... 优点 不依赖IIS 开源和跨平台 中间件支持 性能优化 无所不在的依赖注入 ...

  6. ASP.NET Core 学习笔记 第三篇 依赖注入框架的使用

    前言 首先感谢小可爱门的支持,写了这个系列的第二篇后,得到了好多人的鼓励,也更加坚定我把这个系列写完的决心,也能更好的督促自己的学习,分享自己的学习成果.还记得上篇文章中最后提及到,假如服务越来越多怎 ...

  7. ASP.NET Core 学习笔记 第四篇 ASP.NET Core 中的配置

    前言 说道配置文件,基本大多数软件为了扩展性.灵活性都会涉及到配置文件,比如之前常见的app.config和web.config.然后再说.NET Core,很多都发生了变化.总体的来说技术在进步,新 ...

  8. ASP.NET Core 学习笔记 第五篇 ASP.NET Core 中的选项

    前言 还记得上一篇文章中所说的配置吗?本篇文章算是上一篇的延续吧.在 .NET Core 中读取配置文件大多数会为配置选项绑定一个POCO(Plain Old CLR Object)对象,并通过依赖注 ...

  9. Asp.net core 学习笔记 ( Data protection )

    参考 : http://www.cnblogs.com/xishuai/p/aspnet-5-identity-part-one.html http://cnblogs.com/xishuai/p/a ...

随机推荐

  1. MFC Dialog使用

    1. OnInitDialog 对话框初始化函数 在MFC主对话框OnInitDialog()中弹出对话框 BOOL CXXXDlg::OnInitDialog() { CDialogEx::OnIn ...

  2. 使用Ajax错误的全页面刷新问题

    给提交按钮写了ajax请求,结果每次提交就将全业务刷新了.一大番折腾才知道是 提交按钮标签使用不当导致.   button 标签请添加 type='button' 属性,因为浏览器默认会认为 butt ...

  3. Signalr实时通讯

    我们直接来干货~~~~~~觉得好推荐一下哈  研究不易 参考--https://www.jb51.net/article/133202.htm  这是基本教程 下面是重点: 如果你想允许跨域 具体代码 ...

  4. web自动化测试python+selenium学习总结----python环境安装

    一.python下载地址:https://www.python.org/downloads/ 二.双击python的.exe文件安装: 后面直接点击“next” 步骤二:选择安装在D:\python3 ...

  5. Install rapyuta client on Raspberry Pi

    Install rapyuta on client sudo git clone -b master https://github.com/cnsdytzy/-Rapyuta-installation ...

  6. laravel 自动加载 自定义的文件/辅助函数

    需求 在 laravel 中自定义了一些 辅助函数,想要laravel框架自动加载这些函数 实现 将自定义的辅助函数放在helpers.php文件中,如下: 在compsoer.json 的 auto ...

  7. [最新]ABP ASP.NET Zero v5.5.2 破解

    参考https://www.cnblogs.com/xajh/p/8428818.html后, 搞定了Abp.AspNetZeroCore.dll.Abp.AspNetZeroCore.Web.dll ...

  8. 软件测试实验二----selenium、katalon、junit

    1.安装firefox和seleniumIDE.katalon 安装按成后在Firefox中有seleniumIDE.katalon的图标 2.使用katalon导出测试脚本 点击katalon的插件 ...

  9. vmware中centos6.7系统图形化安装Oracle-无法打开RUNINSTALLER

    如果解压正确 unzip linux……1/2 unzip linux……2/2 给了权限 chown -R Oracle:oinstall /home/database/ 在oracle用户下,运行 ...

  10. Oracle初级优化sql

    1.选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理, ...