2

我正在从存在“用户”的主视图中调用 RenderPartial:

@{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

我的文件 _is 列出 - Shared/DisplayTemplates/uInfo.cshtml 并在本地工作。

万一它是相关的 - 我冒昧地在 Razor 和旧版 .aspx 视图之间来回切换。最初担心将两者混合可能会出现并发症,但到目前为止,我所尝试的一切都奏效了。

谢谢

4

1 回答 1

0

不应该是:

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

如果类型model.UseruInfo,MVC 默认会在DisplayTemplates文件夹中查找uInfo.cshtml。这就是 MVC 约定在起作用。

您不应该使用RenderPartial.

如果您想要局部视图,请执行以下操作:

@Html.Partial("SomePartial", user)

不过,我同意你看到的行为很奇怪,这并不能真正回答你的问题——但首先要尝试遵守 MVC 约定。

于 2011-04-11T23:42:58.203 回答