0

我了解在 ASP.Net MVC 中,剃须刀视图被编译为派生自 System.Web.Mvc.WebViewPage 类或其通用版本的 C# 类。例如,如果我在一个名为“Home”的控制器上有一个名为“Index”的视图,那么 Razor 解析器将构建一个看起来像这样的 C# 类:

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# 类来判断它是从视图还是从局部视图生成的?

4

1 回答 1

1

使用 ASP.NET MVC 和 Razor,“完整”视图和“部分”视图的生成代码之间完全没有区别。事实上,在 MVC 的 Razor 视图引擎中(或者在带有 Razor 的 ASP.NET 网页中,就这点而言)甚至不存在这样的概念。

唯一的小区别(在 MVC 中不存在)是在带有 Razor 的 ASP.NET 网页中,以下划线开头的文件不能直接提供服务。例如,像 ~/_page.cshtml 这样的文件不能由 Web 请求直接运行,而像 ~/page.cshtml 这样的文件可以。但即使是这种差异也不在于编译的代码——它在于 ASP.NET 网页的路由系统拒绝提供以下划线开头的文件。

于 2013-02-22T05:27:48.860 回答