0

ASP.Net MVCでは、レイザービューがSystem.Web.Mvc.WebViewPageクラスまたはその汎用バージョンから派生したC#クラスにコンパイルされることを理解しています。たとえば、コントローラー呼び出し「Home」に「Index」という名前のビューがある場合、かみそりパーサーは次のような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 Webページ)にもそのような概念は存在しません。

唯一の小さな違い(MVCには存在しません)は、Razorを使用するASP.NET Webページでは、アンダースコアで始まるファイルを直接提供できないことです。たとえば、〜/ _page.cshtmlなどのファイルはWebリクエストで直接実行できませんが、〜/page.cshtmlなどのファイルは実行できます。しかし、その違いでさえ、コンパイルされたコードにはありません。アンダースコアで始まるファイルの提供を拒否するのは、ASP.NETWebページのルーティングシステムにあります。

于 2013-02-22T05:27:48.860 に答える