使用Razor模板構建應用注意的細節

2021-09-06 07:48:24 字數 1261 閱讀 6441

razor在語法上的確不錯,用起來非常方便。除了在asp.net mvc中使用外其實我們可以通過使用這模板來完成其他方面的工作,如我們比較常用的**生成輸出。如果想用razor來進行模板處理和輸出資訊等應用心下幾點細節是需要注意的。

1)程式集和名稱引用

2)編譯錯誤提示處理

3)模板編寫智慧型提示

由於razor解釋模板後最終是會通過codedom來生成對應輸出的靜態物件,那對於引用的程集和模板對應引用的命名空間是比較重要,如果這兩者處理不好的情況只會導致最終codedom編譯錯誤。實際應用編寫模板所涉及的程式是不固定的,所以也不可能預想地把對應的程式加進去;解決方法可以在codedom的時候得到當前應用域引用的所有程式集新增進去處理。

命名空間的引用對於編寫模板應用的時候帶來很大的便利性,雖然每個模板可以單獨引用但顯然不夠乙個地方引入來的方便。這問題的解決方法可以通過配置檔案來配置得到。如果當前專案是web專案就簡單點了,直接讀取web配置的命名空間即可。

在asp.net mvc中當編寫razor語法有錯誤的時候,在解釋頁面時都能明確顯示那些地方編寫錯誤。但自己制訂razor模板處理的時候可能沒在關注這一點,這樣存存在乙個比較嚴重的問題就是當模板編譯錯誤的情況,使用者很難知道具體錯誤的原因和地方。其實razor已經提供了模板驗證功能通過razortemplateengine.parsetemplate會對模板進行語法驗證,並返回存在錯誤的資訊和對應的錯誤位置。

由於razor最終需要通過codedom來把模板編譯成靜態化,因此在編譯過程也可能存在一些錯誤,而這些錯誤並不是razor語法所導致的,有可能是方法不存或方法名不匹配引起;因此在靜態編譯層面出現的錯誤也應該能明確提示給使用者看.在**中可以通過compilerresults得到相應的編譯錯誤資訊,同樣包括錯誤的資訊和具體錯誤所在的行.

其實vs已經對cshtml提供了智慧型提示功能,但對於不是mvc專案如傳統的asp.net專案,winform專案等.在編寫cshtml命名空間引入就相對比麻煩,同樣由於vs預設給cshtml提供了基礎型別的指定,如果應用中razor使用的是其他基類那無法針對相應基礎類提示了.其實解決這個的問題比較簡單只需要在專案中新增web.config檔案(不管是asp.net,winform或類庫),新增以下配置節即可.

在namespaces中添你需要引入的命名空間即可,而模板的基礎類通過pagebasetype指定即可.

以上是在使用razor構建自有mvc應用的時候總結出來的一些心得,希望對那此想使用razor做應用的同學有所幫助.不過還有乙個比較重要的問題不能解決就是在模板裡設定斷點無法實現除錯...

Razor 模板引擎的使用

安裝razor的模板引擎,通過vs的 擴充套件管理器 查詢 razorengine 並安裝。安裝的dll包括 razorengine.dll 和 system.web.razor.dll 主要使用razorengine.razor 類下的靜態方法parse string razortemplate,...

強大的Razor引擎自製模板頁注意render

強大的razor引擎 一 razor基礎簡介 razor採用了cshtml字尾的檔名,截圖如下 a 版面布局 從圖上看到,新的檢視引擎已經沒有了site.master這種masterpage了,取而代之的是 layout.cshtml和 viewstart.cshtml。layout.cshtml等...

使用yeoman構建angular應用

本文將介紹如何親手來完成乙個yeoman的generator,以實現快速構建最適合自己的專案。本文將實現的generator起名為ngtimo,依照yeoman的命名規矩就叫做generator ngtimo,是筆者這週末一晚上加一上午參考著yeoman官方給出的幾個generator genera...