2015-02-26 3 views
0

Почему это работает и отображает частичный вид правильно?MVC - @ Html.Partial vs Html.RenderPartial

@Html.Partial("~/Areas/Search/Views/Shared/_CoverageSearch.cshtml") 

В то время как это возвращает ошибку:

@{ 
    Html.RenderPartial("~/Areas/Search/Views/Shared/_CoverageSearch.cshtml"); 
} 

You tried to visit '/Areas/Search/Views/Home/Index.cshtml' which cannot be found.

Почему жалуясь о представлении это вынесенном ??

+0

http://stackoverflow.com/questions/5248183/html-partial-vs-html-renderpartial-html-action-vs-html-renderaction - посмотрите здесь. и здесь: https://msdn.microsoft.com/en-us/library/dd492503(v=vs.118).aspx –

+0

@Ahmedilyas ... Я уже посмотрел туда, и он не обращается к этому - это не помощь , –

+0

Невозможно выполнить репликацию, есть ли у вас какие-либо специальные настройки. Более подробная информация может помочь. – Dnyanesh

ответ

1

Функционально они одинаковы, если вы на самом деле есть что-то вроде:

@{ Html.RenderPartial("~/Areas/Search/Views/Shared/_CoverageSearch.cshtml"); } 

Вместо всего:

Html.RenderPartial("~/Areas/Search/Views/Shared/_CoverageSearch.cshtml"); 

Последнее не является действительным синтаксиса Razor, поэтому вид Wouldn» t сделать правильно.

В противном случае единственная разница заключается в том, что RenderPartial пишет непосредственно ответ, тогда как Partial возвращает строку. Но ни один из методов не приведет к указанной вами ошибке.

Я думаю, что, скорее всего, вы отлаживали, имея этот вид в качестве активной вкладки. Visual Studio иногда путается и делает фактический файл представления стартовым URL-адресом, который недоступен через браузер. Просто измените URL в браузере на фактический маршрут, который заканчивает загрузку этого представления.

+0

Я добавил теги бритвы, которые я пропустил. Я запускал приложение с Partial (хорошо), заменил его RenderPartial (Bad). Я знаю, что они функционально одинаковы - я просто не получаю ошибку. –

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