如何将模型构建器模型提供给表面控制器
How to give a modelsbuilder model to surface controller
我正在使用模型构建器(使用自定义工具方法)开发 Umbraco 7。我需要知道将模型传递给控制器的正确方法是什么。
例如,我有不同类型的页面派生自我的基本页面,我有一个要为所有这些页面生成的组件,即:一个大盒子,带有图像、文本、背景等。
我认为它是我页面上的一部分。所以我为它写了一个动作,并在我的页面上使用 IPageBase 作为输入参数调用它。但显然我不能那样做,特别是模型构建器不会为我生成无参数构造函数,如果我为我的每个页面添加部分 class 会很难看:|
我该怎么办?我只是不喜欢将我的模型转换为我视图中的视图模型
就个人而言,我更喜欢将大对象转换为较小的视图模型,然后将它们传递给部分,但如果你想在你的部分上拥有页面模型,你可以像这样传递它:
@inherits UmbracoTemplatePage<YourModelClass>
或:
@inherits UmbracoViewPage<YourModelClass>
然后您的控制器需要传递 IPublishedContent 项目 (CurrentPage) 作为模型以启用转换为所需 class .
您也可以在部分/视图本身上执行此操作(特别是如果您想要使用整个页面模型中的组合对象)。您的部分内容可能如下所示:
@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 是 class 组成文档类型/模型之一。当然,您也可以在控制器甚至服务内部执行此转换/创建。希望它能帮助你进一步开始玩这个。
我正在使用模型构建器(使用自定义工具方法)开发 Umbraco 7。我需要知道将模型传递给控制器的正确方法是什么。
例如,我有不同类型的页面派生自我的基本页面,我有一个要为所有这些页面生成的组件,即:一个大盒子,带有图像、文本、背景等。
我认为它是我页面上的一部分。所以我为它写了一个动作,并在我的页面上使用 IPageBase 作为输入参数调用它。但显然我不能那样做,特别是模型构建器不会为我生成无参数构造函数,如果我为我的每个页面添加部分 class 会很难看:|
我该怎么办?我只是不喜欢将我的模型转换为我视图中的视图模型
就个人而言,我更喜欢将大对象转换为较小的视图模型,然后将它们传递给部分,但如果你想在你的部分上拥有页面模型,你可以像这样传递它:
@inherits UmbracoTemplatePage<YourModelClass>
或:
@inherits UmbracoViewPage<YourModelClass>
然后您的控制器需要传递 IPublishedContent 项目 (CurrentPage) 作为模型以启用转换为所需 class .
您也可以在部分/视图本身上执行此操作(特别是如果您想要使用整个页面模型中的组合对象)。您的部分内容可能如下所示:
@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 是 class 组成文档类型/模型之一。当然,您也可以在控制器甚至服务内部执行此转换/创建。希望它能帮助你进一步开始玩这个。