2012-11-02 27 views
8

所以我最近開始使用ASP.NET MVC 4.我正在使用剃鬚刀引擎。 我的問題是關於視圖文件,後綴爲cshtml。在我看來,這些是通過剃鬚刀預編譯成* .cs文件,然後將其編譯爲MSIL。 (作爲一名JSP開發人員,我熟悉的一種模式)。我做這種假設的一個原因是,如果我在cshtml文件中輸入一些無效的c#代碼,我會得到如下所示的編譯錯誤:ASP.NET MVC定位從cshtml生成的cs文件?

線34:公共類_Page_Views_BaseDataAdmin_Index_cshtml:...

和線路34並不表示其中的誤差在CSHTML文件,就像類_Page_Views_BaseDataAdmin_Index_cshtml似乎是指一個普通的.NET類不是視圖文件。

所以我的問題是:我在哪裏可以找到cs文件?具體來說,在上面的例子中,「_Page_Views_BaseDataAdmin_Index_cshtml.cs」?也許我需要添加一些配置來告訴MVC將這個.cs文件保存在磁盤上,如果是這樣,我該怎麼做?

謝謝!

+1

什麼是想知道這些文件是背後的原因是什麼?大多數情況下,你不應該需要任何東西。 – nerdybeardo

+1

目前出於教學原因。人類的認知傾向通常是這樣的:知識/理解主要建立在已有知識的基礎之上。由於我對c#比對razor語法更熟悉,它將幫助我理解查看生成的c#。 但我相信也有其他原因。 –

+0

除了教育好奇心,沒有理由去查看生成的.cs文件。 – jrummell

回答

5

您可以在Temporary ASP.NET Files文件夾中找到已編譯的視圖。

首先找到對應於您的觀點(例如:home.cshtml):在.compiled文件 home.cshtml.a8d08dba.compiled

此文件包含組件名稱:裝配= 「App_Web_hkc53urb」

你的cs文件將與一個數字組合而成的集名稱:App_Web_hkc53urb.1.cs

更簡單的方法可能是使用Windows在臨時ASP.NET目錄中搜索您的視圖名稱。

11

找到生成的文件的快速提示是將其添加到.cshtml文件中。

這會立即告訴你的完整路徑

<div>This file is compiled to @this.GetType().Assembly.CodeBase</div> 
+0

如果編譯成功,這不僅僅是有用嗎? –

+0

是的,它必須編譯才能找到最初的文件夾,但如果你試圖調試一個非工作頁面,你可以通過在這個文件夾中搜索'find in files'來找到你想要的文件來獲得實際的文件名 - 類似'App_Web_5d1gwd4o.16.cs'。只需恢復到一個可編輯的版本,小心不要失去改變。如果你更新'.cstml'文件,這個文件將被更新,然後你可以檢查它。 –