我正在使用 Umbraco 6,并且正在使用新的 MVC 架构。我有一个文档类型视图模板,它有一个视图模型,它是实例化的,并且它的属性是从控制器填充的。其中一个属性是集合,在视图模板中,我遍历集合并使用'Html.Partial("partialName", modelObject)' 渲染出具有单独视图模型的部分视图
我遇到的奇怪问题是,首先,在 Visual Studio 中,我收到 ReSharper 警告,告诉我它无法解析具有该名称的局部视图(我检查了 50 次并且拼写正确)。此外,当我然后导航到该页面时,我得到了可靠的“对象引用未设置为对象的实例”YSOD。
我已经调试了代码,并且控制器操作正常,为文档类型模板实例化视图模型的逻辑工作正常,并且正确填充了属性,我还确保属性仍然设置在视图中和用于呈现集合项的循环正确地为每个集合项实例化一个视图模型对象并正确设置属性。它在碰到 Html.Partial 时会中断。
文档类型查看代码如下:
@foreach (KeyValuePair<decimal, IPublishedContent> result in Model.Results)
{
PropertySearchResultViewModel model = ObjectMapper.SearchResultToViewModel(result);
Html.RenderPartial("PropertySearchResultDesktop", model);
}
部分查看代码如下:
@using Production.Umbraco.Extensions.Models.ViewModels;
@inherits UmbracoViewPage<PropertySearchResultViewModel>
<article id="property-result-@Model.Node.Id.ToLower()">
<p>@Model.Node.Name</article>
<p>Distance: @Model.Distance Miles</p>
</article>
这是我的 VS 解决方案树的屏幕截图:
'NewHomes.cshtml' 文档类型视图模板是从 NewHomesController 返回的,并且视图正在调用从 Umbraco 后台创建并自动放置的“PropertySearchResultDesktop.cshtml”部分视图。
Umbraco 网站说你可以而且应该把你的部分观点放在这里
http://our.umbraco.org/Documentation/Reference/Mvc/partial-views
但无论我尝试做什么,它都不会渲染局部。我在 SO 上看到了另一个关于此的问题,但答案只是将它放在 MacroPartials 中,作为在 Umbraco 6 中使用局部视图的好处的一部分,我不想这样做,因为它们继承自 UmbracoViewPage,具有很强的类型化模型声明,MacroPartials 没有。
有没有人遇到过这个?