【问题标题】:What differences exist for compiled WebViewPage-derived class generated from an ASP.Net MVC view vs. a partial view?从 ASP.Net MVC 视图与部分视图生成的已编译 WebViewPage 派生类存在哪些差异?
【发布时间】:2013-02-22 03:04:21
【问题描述】:

我了解在 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
    }
}

我想知道从 razor 局部视图生成的 C# 类。特别是:

  1. 从局部视图生成的 C# 类是否也继承自 WebViewPage?

  2. 生成的 C# 类在视图和局部视图之间有什么区别吗?

  3. 您能否通过检查生成的 C# 类来判断它是从视图还是从局部视图生成的?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-4


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,这很有帮助。
    猜你喜欢
    • 2013-09-06
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多