Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Umbraco 组合、强类型视图和部分视图(组合继承)_Umbraco_Umbraco7 - Fatal编程技术网

Umbraco 组合、强类型视图和部分视图(组合继承)

Umbraco 组合、强类型视图和部分视图(组合继承),umbraco,umbraco7,Umbraco,Umbraco7,首先,我对Umbraco 7.4.3还比较陌生,所以也许我只是想用错误的方式来做?我希望社区能纠正我的错误。我生活中真正想要的是Visual Studio中用于文档类型的IntelliSense 我试图在我的文档类型中使用组合(而不是主文档类型,这似乎是新版本的前进方向)。然而,我无法强制转换到该组合的实例,这意味着该组合的部分视图会导致异常 更详细地说: 文档类型 作文(文件夹) Seo-DocType 主页-DocType(使用Seo组件) 模板 布局 @inherits Umbra

首先,我对Umbraco 7.4.3还比较陌生,所以也许我只是想用错误的方式来做?我希望社区能纠正我的错误。我生活中真正想要的是Visual Studio中用于文档类型的IntelliSense

我试图在我的文档类型中使用组合(而不是主文档类型,这似乎是新版本的前进方向)。然而,我无法强制转换到该组合的实例,这意味着该组合的部分视图会导致异常

更详细地说:

文档类型

  • 作文(文件夹)
    • Seo-DocType
  • 主页-DocType(使用Seo组件)
模板

布局

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    Layout = null;
}

<html>
    <head>
        @RenderSection("Head", required: false)
    </head>
        @RenderBody()
    <body>
    </body>
</html>

我认为在前端,无论您使用的是哪种型号/文档类型,都会被视为一种文档类型,而不管它是由什么公司制作的。应该没有理由强制转换任何内容,因为Seo doctype中的任何属性都应该是模型的一部分。至少这是我的理解

我不知道ModelsBuilder作为核心的一部分工作得有多好,但我想它应该提供强类型模型(和IntelliSense)。你有没有检查过Seo属性是否还不是主模型的一部分

编辑


对不起,我不是真的想把这当作一个答案,有这么多的不确定性,甚至是我自己的一个问题。我会把它留在这里,直到有人告诉我其他的;-)

我认为在前端,无论您使用的是什么型号/文档类型,都会被视为一种文档类型,而不管它是由什么组件制作的。应该没有理由强制转换任何内容,因为Seo doctype中的任何属性都应该是模型的一部分。至少这是我的理解

我不知道ModelsBuilder作为核心的一部分工作得有多好,但我想它应该提供强类型模型(和IntelliSense)。你有没有检查过Seo属性是否还不是主模型的一部分

编辑


对不起,我不是真的想把这当作一个答案,有这么多的不确定性,甚至是我自己的一个问题。我会把它留在这里,直到有人告诉我其他的;-)

因为一个DocType可以分配多个合成,所以它们不能对合成使用doc类型继承,因为在C#中不可能从多个类继承。相反,它们创建了一个接口,正如您在文章中提到的,然后doctype类和composition类都实现了它。然后,如果我正确地记住了doctype上的属性,那么就调用compositions类上的静态方法来获取值。因此,您应该能够使用该界面,而不是在您的partial中使用以下内容:

@inherits Umbraco.Web.Mvc.UmbracoViewPage<Seo>
@继承Umbraco.Web.Mvc.UmbracoViewPage
请使用以下选项:

@inherits Umbraco.Web.Mvc.UmbracoViewPage<ISeo>
@继承Umbraco.Web.Mvc.UmbracoViewPage

因为一个DocType可以分配多个合成,所以不能对合成使用doc类型继承,因为在C#中不能从多个类继承。相反,它们创建了一个接口,正如您在文章中提到的,然后doctype类和composition类都实现了它。然后,如果我正确地记住了doctype上的属性,那么就调用compositions类上的静态方法来获取值。因此,您应该能够使用该界面,而不是在您的partial中使用以下内容:

@inherits Umbraco.Web.Mvc.UmbracoViewPage<Seo>
@继承Umbraco.Web.Mvc.UmbracoViewPage
请使用以下选项:

@inherits Umbraco.Web.Mvc.UmbracoViewPage<ISeo>
@继承Umbraco.Web.Mvc.UmbracoViewPage

Hi,是的,“Home”类型实现了“ISeo”接口,因此属性就在那里。但为了强类型我的视图,我需要部分继承UmbracoViewPage,以便可以在其他页面上重复使用。问题是,即使这两种类型都从同一个接口继承,我也不能在它们之间转换。当然可以。如果你只是继承了Umbraco.Web.Mvc.UmbracoViewPage而没有演员阵容,IntelliSense就会消失?是的,如果你不指定类型,你就会失去IntelliSense的所有优点:(嗯……使用动态?#wildguess啊,伙计,这与我的想法很接近!!如果我找到解决方案,我会调查并报告。嗨,是的,“家”类型实现“ISeo”接口,所以属性就在那里。但是为了强类型我的视图,我需要部分继承UmbracoViewPage,以便它可以在其他页面上重复使用。问题是,即使这两种类型都从同一个接口继承,我也不能在它们之间转换。啊。是的,当然。如果你只是从Umbraco.Web.Mvc.UmbracoV继承iewPage没有演员阵容,IntelliSense就消失了?是的,如果你不指定类型,你就失去了IntelliSense的所有优点:(嗯……使用动态?#wildguess啊,伙计,这与我的想法很接近!!如果我找到了解决方案,我会调查并报告。这是正确的。我确实记得尝试过这个,但我尝试了很多不同的东西,我想我一定是刚刚通过了它。谢谢-这是理所当然的,因为您有两个实现sam的类e接口,并不意味着你可以在类之间转换-你只能将每个类转换为接口。这是正确的。我确实记得尝试过这个,但我尝试了很多不同的东西,我想我一定是刚刚通过了它。谢谢-很自然,仅仅因为你有两个实现相同接口的类,并不意味着可以在类之间强制转换-只能将每个类强制转换为接口。
@inherits Umbraco.Web.Mvc.UmbracoViewPage<ISeo>