RenderPartial рендерится на Dev, но не работает на производственном сервере - PullRequest
2 голосов
/ 12 апреля 2011

Я вызываю RenderPartial из основного представления, в котором существует 'user':

@{Html.RenderPartial("DisplayTemplates/uInfo", user);}

Работает на моем компьютере разработчика, но рабочий сервер выдает эту ошибку времени выполнения:

частичное представление 'DisplayTemplates / uInfo' не найдено или ни один механизм просмотра не поддерживает искомые местоположения.Были найдены следующие местоположения: ...

Были найдены следующие местоположения:

~/Views/Account/DisplayTemplates/uInfo.aspx
~/Views/Account/DisplayTemplates/uInfo.ascx
~/Views/Shared/DisplayTemplates/uInfo.aspx
~/Views/Shared/DisplayTemplates/uInfo.ascx
~/Views/Account/DisplayTemplates/uInfo.cshtml
~/Views/Account/DisplayTemplates/uInfo.vbhtml
~/Views/Shared/DisplayTemplates/uInfo.cshtml
~/Views/Shared/DisplayTemplates/uInfo.vbhtml

Мой файл _ в списке - Shared / DisplayTemplates / uInfo.cshtml и работает локально.

На случай, если это уместно - я позволю себе свободно переключаться между Razor и устаревшими представлениями .aspx.Первоначально был обеспокоен возможными осложнениями смешения двух, но до этого момента все, что я пробовал, работало.

thx

1 Ответ

0 голосов
/ 12 апреля 2011

Не должно ли это быть:

@Html.DisplayFor(model => model.User)

И если тип model.User равен uInfo, MVC по умолчанию заглянет в папку DisplayTemplates и найдет uInfo.cshtml.Это соглашение MVC в действии.

Вы не должны отображать шаблоны отображения с RenderPartial.

Если вы хотите частичное представление, сделайте следующее:

@Html.Partial("SomePartial", user)

Тем не менее, я согласен, что поведение, которое вы видите, странное, и на самом деле это не ответ на ваш вопрос - но в первую очередь старайтесь придерживаться соглашений MVC.

...