在Razor中调用部分视图

时间:2017-02-22 19:19:55

标签: c# asp.net visual-studio razor umbraco

我有一个似乎让我发疯的问题。如何将部分视图从另一个主页拉到我的主页(与视图无关等)并且在另一个文件夹中?我只想参考:

@Html.ThemedPartial(Model, "Latest")

(来自Umbraco的Articulate博客)。但是,我不知道如何做到这一点,因为我不知道使用指令包含什么等等?

有一种简单的方法吗?

我收到以下错误:

  

编译器错误消息:CS1061:' System.Web.Mvc.HtmlHelper>'不包含' ThemedPartial'的定义没有扩展方法' ThemedPartial'接受类型' System.Web.Mvc.HtmlHelper>'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)

引用@Html.ThemedPartial(Model, "Latest")

处的来源错误

我也试过@Html.Partial("~/App_Plugins/Articulate/Themes/MyTheme/Views/Partials/Latest.cshtml", Model)而不是@Html.ThemedPartial(Model, "Latest")而没有运气。我得到以下内容:

  

Umbraco.Web.Mvc.ModelBindingException:无法将源内容类型Umbraco.Web.PublishedContentModels.Index绑定到模型类型Articulate.Models.IMasterModel。

1 个答案:

答案 0 :(得分:1)

当您查看Articulate sourcecode时,您会看到ThemedPartial只是一种执行以下操作的扩展方法:

var path = PathHelper.GetThemePartialViewPath(model, partialName);
return html.Partial(path, viewModel, viewData);

GetThemePartialViewPath返回视图的相对路径

如果正确设置了Latest.cshtml的@model声明

,则以下内容应该有效

@Html.Partial("~/App_Plugins/Articulate/Themes/MyTheme/Views/Partials/Latest.cshtml", Model)