Asp.net core 学习笔记 Razor Page

更新 : 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 还要好一点点啦.

 

转载于:https://www.cnblogs.com/keatkeat/p/10770046.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值