我正在使用模型构建器(使用自定义工具方法)处理Umbraco 7。我需要知道将模型传递给控制器的正确方法是什么。
例如,我有从我的基页派生的不同类型的页面,我有一个我想要为它们生成的组件,即:一个大盒子,带有图像,文本,背景等。
我认为它在我的网页上是部分的。所以我为它写了一个动作,并在我的页面上用IPageBase作为输入参数调用它。但显然我不能这样做,特别是模型构建器没有为我生成无参数构造函数,如果我为每个页面添加一个分部类,它会很难看:|
我该怎么办?我只是不想将我的模型转换为我视图中的模型
答案 0 :(得分:3)
就个人而言,我更喜欢将大型对象转换为较小的视图模型并将它们传递给局部视图,但如果您想在局部视图中使用页面模型,则可以像这样传递:
@inherits UmbracoTemplatePage<YourModelClass>
或:
@inherits UmbracoViewPage<YourModelClass>
然后你的控制器需要传递 IPublishedContent 项目( CurrentPage )作为模型,以便转换为所需的类。
您也可以在部分/视图本身上执行此操作(特别是如果您想要使用整页模型中的合成对象)。你的部分可能看起来像:
@inherits UmbracoTemplatePage
@{
var seo = new SEO(Model.Content);
if (seo != null)
{
<title>@seo.MetaTitle</title>
<meta name="description" content="@seo.MetaDescription">
<meta name="keywords" content="@seo.MetaKeywords">
}
}
其中SEO是一种组合文档类型/模型的类。当然,您也可以在控制器甚至服务中执行此转换/创建。希望它能帮助你进一步开始玩这个。