所以我需要能够将我的网站标题设置为访问者所在的页面,所以在我的Master.cshtml中我有
@inherits UmbracoTemplatePage
....
<title>@Model.Content.Name</title>
效果很好。
现在我想将自定义博客帖子模型传递给我的blogview,其中有Master.cshtml作为布局
@inherits UmbracoViewPage<Umbraco_Blog.Models.BlogPost[]>
@{
Layout = "Master.cshtml";
}
在我的控制器中我返回一个BlogPost []
return CurrentTemplate(blogposts);
但这只是给了我这个错误
传递到字典中的模型项是类型的 &#39; Umbraco_Blog.Models.BlogPost []&#39;,但这本词典需要一个模型 项目类型&#39; Umbraco.Web.Models.RenderModel&#39;。
如果我删除了布局,那么它就可以了。
答案 0 :(得分:0)
解决此问题的一种方法是使您的BlogPost模型继承自RenderModel。如果采用这种方法,则需要使用IPublishedContent实例调用RenderModel构造函数,您可以这样做:
public BlogPost() : base(UmbracoContext.Current.PublishedContentRequest.PublishedContent)
{
}
另一种解决方案是将布局强烈地键入基类模型,例如
@model MyBaseViewModel
然后将BlogPost模型更改为从该基础模型继承,并使用
定义视图的模型类型@model BlogPost
请注意,如果采用这种方法,则会丢失辅助属性,例如UmbracoHelper等。