2013-02-22 27 views
0

我明白,在ASP.Net MVC中,剃鬚刀視圖被編譯成C#類,它們是從System.Web.Mvc.WebViewPage類或其通用版本派生而來的。舉例來說,如果我有一個名爲「索引」上的控制器稱之爲「家」的說法,剃鬚刀解析器會建立一個C#類,它看起來是這樣的:從ASP.Net MVC視圖與部分視圖生成的編譯WebViewPage派生類有什麼不同?

public class _Page_Views_Home_Index_cshtml : System.Web.Mvc.WebViewPage 
{ 
    public _Page_Views_Home_Index_cshtml() 
    { } 

    public override void Execute() 
    { 
     ...code that combines the razor C# code with the markup 
    } 
} 

我想知道關於C#類,它是從剃刀部分視圖中生成。特別是:

  1. 從部分視圖生成的C#類是否也從WebViewPage繼承?

  2. 在視圖和部分視圖之間生成的C#類有什麼區別嗎?

  3. 你可以通過檢查生成的C#類來判斷它是從視圖還是從局部視圖生成的?

回答

1

在ASP.NET MVC和Razor中,「完整」視圖和「部分」視圖的生成代碼之間沒有任何區別。事實上,在MVC的Razor視圖引擎中(或者在使用Razor的ASP.NET Web Pages中),甚至都不存在這樣的概念。

唯一的小差異(在MVC中不存在)是,在帶有Razor的ASP.NET Web Pages中,以下劃線開頭的文件不能直接進行處理。例如,像〜/ _page.cshtml這樣的文件不能直接通過web請求來運行,而像〜/ page.cshtml這樣的文件則可以。但即使這種差異不在編譯的代碼中 - 它在ASP.NET Web Pages的路由系統中拒絕提供以下劃線開頭的文件。

+0

謝謝,這是非常有幫助的。 – 2013-02-22 15:11:28