2016-09-10 6 views
0

У меня есть вложенный PatialView в Asp.net MVC.Стоимость передачи модели на вложенный PartialView в Asp.Net MVC

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 и т. Д., Вы можете предварительно скомпилировать все представления при запуске или скомпилировать каждое представление во время первого вызова).

Компиляция страницу pv1.cshtml выведу следующий код (упрощенно):

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); 
} 

Вы можете видеть, что оба вызова к @ Html.Partial генерировать тот же код для выполнения веб-странице, который будет вызывать скомпилированные представления pv2 и pv3 код для генерации html, время выполнения которого будет зависеть от размера просмотров.

В большинстве случаев вы не хотите думать о том, как быстро выполняется компиляция/исполнение страницы, потому что это очень быстро. Включение медленного кода в представления сделает медленное выполнение заметок - сделайте весь «медленный» код в контроллере - никогда не добавляйте доступ к DB, вызовы api и подобные вещи в ваш .cshtml, и ваш проект должен преуспеть.

 Смежные вопросы

  • Нет связанных вопросов^_^