Asp.net core 學習筆記 Razor Page

更新 : 2019-06-15 html

目前 razor page 在作 multiple form in one page 的時候有個大侷限前端

就是沒法使用多個 BindProperty react

一旦多個,那麼任何一個 form 提交都會把全部 model 進行 valid git

那就壞掉了github

refer : c#

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-parametersapi

沒有去找 github issue 之後纔看看吧。前端框架

目前的作法就不要使用 BindProperty, 代價就是前端沒法用 c# binding form. mvc

 

 

 

更新 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 還要好一點點啦.

相關文章
相關標籤/搜索