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
@模型.类别

@Model.Content.CreateDate.ToLongDateString(),@Model.Content.CreateDate.ToShortTimeString()

@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