Umbraco 6 Html.Partial中的“无法解析部分视图X”

时间:2013-07-18 10:47:22

标签: asp.net-mvc resharper asp.net-mvc-partialview umbraco6

我正在使用Umbraco 6,并且正在使用新的MVC架构。我有一个文档类型视图模板,它有一个视图模型,它被实例化并从控制器填充它的属性。其中一个属性是一个集合,在视图模板中,我使用'Html.Partial(“partialName”,modelObject)'

遍历集合并使用单独的视图模型渲染出局部视图

我遇到的奇怪问题是,首先,在Visual Studio中,我收到一个ReSharper警告,告诉我它无法解析具有该名称的部分视图(我已经检查了50次并且我拼写正确)。另外,当我然后导航到页面时,我得到了可靠的ol'“对象引用没有设置为对象的实例”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解决方案树的屏幕截图:

Visual Studio solution screenshot

从NewHomesController返回'NewHomes.cshtml'文档类型视图模板,视图调用从Umbraco后台创建的'PropertySearchResultDesktop.cshtml'局部视图,并自动放置。

Umbraco网站说你可以而且应该把你的部分观点放在这里

http://our.umbraco.org/Documentation/Reference/Mvc/partial-views

但无论我尝试做什么,它都不会呈现局部。我已经在SO上看到了另外一个关于这个的问题,但答案只是将它放在MacroPartials中,我不想做的是在Umbraco 6中使用部分视图的好处的一部分是它们从UmbracoViewPage强烈地继承类型化的模型声明,MacroPartials没有。

有没有人遇到过这个?

1 个答案:

答案 0 :(得分:0)

固定。问题在于我从控制器传递给文档类型视图的模型。

在Umbraco文档中,您可以创建一个控制器来劫持Umbraco路线,并使用自定义模型提供您自己的视图,如下所示:

     public ActionResult Index(RenderModel model)
     {
        SearchResultsViewModel viewModel = new SearchResultsViewModel
        return CurrentTemplate(viewModel);
     }

在我看来,我有:

@inherits UmbracoViewPage<SearchResultsViewModel>

但是,似乎为了做到这一点,你必须确保你的自定义视图模型继承自RenderModel,并使用一个构造函数将RenderModel作为参数,然后在基础对象上设置一些属性,如下所示:

public class SearchResultsViewModel :RenderModel
{
    public SearchResultsViewModel(RenderModel model) : base(model.Content, model.CurrentCulture)
    {

    }
}

以前,我的视图模型没有从任何东西继承而且有一个无参数构造函数。

这篇文章引导我找到了正确的答案。

http://www.ben-morris.com/using-umbraco-6-to-create-an-asp-net-mvc-4-web-applicatio

另外,作为附注,我仍然收到ReSharper警告“无法解析部分视图PropertySearchResultDesktop”,但我认为这是一个ReSharper错误而不是错误。

即使在通话中有完整路径和文件扩展名,它仍会抱怨。

虽然在调试时,即使使用我的旧控制器代码,我也觉得很奇怪,在模型绑定阶段或控制器内部或视图中都没有抛出异常,直到它转到Html.Partial调用。

无论如何,我希望这可以帮助任何有同样问题的人。