Asp.net mvc 将自定义模型传递到Umbraco局部视图并获取对象投射错误
我正在尝试创建一个自定义模型并将其传递给我的局部视图,但我不断遇到此错误Asp.net mvc 将自定义模型传递到Umbraco局部视图并获取对象投射错误,asp.net-mvc,razor,model,umbraco7,Asp.net Mvc,Razor,Model,Umbraco7,我正在尝试创建一个自定义模型并将其传递给我的局部视图,但我不断遇到此错误无法将类型为“Umbraco.Web.PublishedCache.XmlPublishedCache.XmlPublishedContent”的对象强制转换为类型为“BlogPostModel”,无法理解原因。我有3个模型,BlogPostModel继承自HomeModel,HomeModel继承自BaseLayoutModel BlogPostModel.cs public class BlogPostModel
无法将类型为“Umbraco.Web.PublishedCache.XmlPublishedCache.XmlPublishedContent”的对象强制转换为类型为“BlogPostModel”
,无法理解原因。我有3个模型,BlogPostModel继承自HomeModel,HomeModel继承自BaseLayoutModel
BlogPostModel.cs
public class BlogPostModel : HomeModel
{
public BlogPostModel(RenderModel model) : base(model)
{
}
public IPublishedProperty MainBlogImage { get; set; }
public IPublishedProperty ImageAltText { get; set; }
public IPublishedProperty Introduction { get; set; }
public IPublishedProperty Category { get; set; }
}
HomeModel.cs
public class HomeModel : BaseLayoutModel
{
public HomeModel(RenderModel model) : base(model)
{
}
public IPublishedProperty SiteName { get; set; }
}
BaseLayoutModel.cs
public class BaseLayoutModel : RenderModel
{
public BaseLayoutModel(RenderModel model) : base(model.Content, model.CurrentCulture)
{
}
public IPublishedProperty PageTitle { get; set; }
public IPublishedProperty MainContent { get; set; }
public IPublishedProperty MetaDescription { get; set; }
public IPublishedProperty MetaKeywords { get; set; }
}
我的HomeController.cs是
public class HomeController : RenderMvcController
{
public ActionResult Home(RenderModel CurrentItem)
{
var Model = new BlogPostModel(CurrentItem);
//Base Layout Model
Model.PageTitle = CurrentItem.Content.GetProperty("pageTitle");
Model.MainContent = CurrentItem.Content.GetProperty("mainContent");
Model.MetaDescription = CurrentItem.Content.GetProperty("metaDescription");
Model.MetaKeywords = CurrentItem.Content.GetProperty("metaKeywords");
Model.SiteName = CurrentItem.Content.GetProperty("siteName", recurse: true);
return View(Model);
}
}
这是我的主页,我想呈现部分视图
@inherits Umbraco.Web.Mvc.UmbracoViewPage<TestUmbraco.Models.BlogPostModel>
@{
Layout = "BaseLayout.cshtml";
IPublishedContent blogLandingPage = Umbraco.Content(1062);
}
<div class="row">
<div class="col-sm-12">
<section>
@foreach (var blogPost in blogLandingPage.Children)
{
Html.RenderPartial("HomeBlogList", blogPost);
}
</section>
</div>
</div>
@继承Umbraco.Web.Mvc.UmbracoViewPage
@{
Layout=“BaseLayout.cshtml”;
ippublishedcontent blogLandingPage=Umbraco.Content(1062);
}
@foreach(blogLandingPage.Children中的var blogPost)
{
RenderPartial(“HomeBlogList”,blogPost);
}
我的部分观点是
@inherits Umbraco.Web.Mvc.UmbracoViewPage<TestUmbraco.Models.BlogPostModel>
<article class="blog-teaser clearfix">
<div class="hovereffect teaser-image col-lg-4 col-md-4 col-sm-6 col-xs-12">
<a href="@Model.Content.Url">
<img src="@Umbraco.TypedMedia(Model.MainBlogImage).GetCropUrl(500,300)" alt="Placeholder to be Removed" />
</a>
<div class="teaser-overlay">
<h2>@Model.Category</h2>
<p>
<a class="info" href="/blogs/moyou-london-stamping-plate-review"> Read More</a>
</p>
</div>
</div>
<div class="teaser-text col-lg-8 col-md-8 col-sm-6 col-xs-12">
<header>
<h2>
<a rel="bookmark" href="@Model.Content.Url">@Model.PageTitle</a>
</h2>
</header>
<footer>
<p class="author-datetime">
<span rel="author" content="@Model.Content.CreatorName">
<a rel="nofollow" href="#">@Model.Content.CreatorName</a>
<time datetime="@Model.Content.CreateDate">@Model.Content.CreateDate.ToLongDateString(), @Model.Content.CreateDate.ToShortTimeString()</time>
</span>
</p>
</footer>
<section>
@Umbraco.Truncate(Model.Introduction.ToString(), 240, true)
<a class="more-link" href="@Model.Content.Url">Read more</a>
</section>
</div>
</article>
@继承Umbraco.Web.Mvc.UmbracoViewPage
@模型.类别
@Umbraco.Truncate(Model.Introduction.ToString(),240,true)
我不明白这为什么不起作用。请帮助问题出在代码的这一部分:
@foreach (var blogPost in blogLandingPage.Children)
{
Html.RenderPartial("HomeBlogList", blogPost);
}
变量blogPost
的类型为“XmlPublishedContent”,但您的局部视图需要TestUmbraco.Models.BlogPostModel
视图模型
将局部视图中的模型更改为
XmlPublishedContent
,或者填充模板中的正确类型(BlogPostModel
),并将其传递给局部视图。您可能必须更改BlogPostModel
类构造函数,以接受XmlPublishedContent
参数,而不是RenderModel
,并使用该内容实例设置任何属性。您正在传递类型为“Umbraco.Web.PublishedCache.XmlPublishedCache.XmlPublishedContent”的模型,但视图需要键入“BlogPostModel”。如果要在视图中获取自定义模型的值,请将模型保留在ViewBag中,然后使用可以使用ViewBag.ViewBagName.MainBlogImage而不是在局部视图中使用model.MainBlogImage