2016-09-10 9 views
0

Asp.net MVCにいくつかのネストされたPatialViewがあります。Asp.Net MVCでネストされたPartialViewにモデルを渡すコスト

pv1.cshtml

@model MyNameSpace.ClassDto 
@{ 
    Layout = null; 
} 
@Html.Partial("pv2",Model) 
@Html.Partial("pv3",Model.FormName) 

pv2.cshtml

@model MyNameSpace.ClassDto 
@{ 
    Layout = null; 
} 
<p>@Model.FormName</p> 

pv3.cshtml

@model string 
@{ 
    Layout = null; 
} 
<p>@Model</p> 

今の質問は何ですこれらの方法の種類が優れており、コストがかかりますか?

+1

対処しようとしている問題は何ですか?どのような費用ですか?メンテナンスコスト、ビルドコスト、コンパイルコスト? –

+0

私はランニングコストを意味しています。プロジェクトはウェブベースなので、クライアントがウェブページでスピードを感じることが重要です。 – user2830448

答えて

1

@Html.Partial("pv2",Model)@Html.Partial("pv3",Model.FormName)の違いは無視できます。

asp.net mvcがあなたのためにページを提供している場合、ページは既に設定されているはずです(設定、asp.net mvcのバージョンなどに応じて、起動時にすべてのビューをあらかじめコンパイルするか、最初の呼び出し中)。あなたが@ Html.Partialに両方のコールが呼び出すされ、ウェブページの実行のために同じコードを生成していることがわかります

public override void Execute() { 
    Layout = null; 
    BeginContext("~/Views/Test/pv1.cshtml", 79, 2, true); 
    WriteLiteral("\r\n"); 
    EndContext("~/Views/Test/pv1.cshtml", 79, 2, true); 

    BeginContext("~/Views/Test/pv1.cshtml", 82, 26, false); 
    Write(Html.Partial("pv2", Model)); 
    EndContext("~/Views/Test/pv1.cshtml", 82, 26, false); 

    BeginContext("~/Views/Test/pv1.cshtml", 108, 2, true); 
    WriteLiteral("\r\n"); 
    EndContext("~/Views/Test/pv1.cshtml", 108, 2, true); 

    BeginContext("~/Views/Test/pv1.cshtml", 111, 35, false); 
    Write(Html.Partial("pv3", Model.FormName)); 
    EndContext("~/Views/Test/pv1.cshtml", 111, 35, false); 
} 

:ページpv1.cshtmlは、次のコード(簡体字)を引き出すだろうコンパイル

コンパイルされたビューpv2pv3はhtmlを生成するコードで、実行時間はビューのサイズに依存します。

ほとんどの場合、ページのコンパイルと実行の速度は非常に速いため、ほとんどの場合、どのくらいの時間を要しているか考えたくありません。低速なコードをビューに置くと、ビューの実行が遅くなります。コントローラのすべての「遅い」コードを実行します.DBアクセス、APIコール、および同様のものを.cshtmlに入れないでください。

関連する問題