【问题标题】:Umbraco 7.1.8 - using Content Type Picker type as Macro parameterUmbraco 7.1.8 - 使用内容类型选择器类型作为宏参数
【发布时间】:2014-10-21 13:44:35
【问题描述】:

所以我尝试将内容类型选择器用作宏的参数。将宏添加到页面时,我选择别名为“myType”的内容类型。

如何在宏的局部视图中检索文档类型的别名?

目前,我正在使用:

var type = Model.MacroParameters["myType"];

给出文档类型的 ID。我可以使用 ID 检索文档类型的别名吗?

使用时:

@Umbraco.Content(type)

它返回一个空的内容对象。

【问题讨论】:

    标签: asp.net-mvc razor umbraco umbraco7


    【解决方案1】:

    我找到了一个使用内容类型选择器数据类型检索文档类型别名的解决方案:

    //get current content type service
    var myContentTypeService = ApplicationContext.Current.Services.ContentTypeService;
    
    //get ID of selected content type
    int typeID = Convert.ToInt32(Model.MacroParameters["myType"].ToString());
    
    //get content type object using ID
    IContentType myContentType = myContentTypeService.GetContentType(typeID);
    
    //retrieve alias
    String alias = myContentType.Alias;
    

    【讨论】:

      【解决方案2】:

      您的方法使用了内容服务,该服务会访问数据库,而您不希望在前端出现这种情况!在您的部分中,请改用以下内容:

      //get content
      var page = Umbraco.TypedContent(Convert.ToInt32(Model.Macroparameters["myType"]));
      //get Doctype Alias
      var alias = page.DocumentTypeAlias
      

      作为一般规则,您应该避免将内容服务用于前端显示,而应使用 Umbraco 助手的 TypedContent 方法!希望有帮助:)

      【讨论】:

      • 我之前曾尝试过该代码,但它为 pagealias 返回空对象 - 当与 Content Picker 数据类型一起使用时,它按要求工作,但不适用于 Content Type 选择器数据类型。
      • 对不起,我误解了那里的问题,在这种情况下,是的,您将不得不使用内容服务。如果您只需要别名,一种更有效的方法可能是创建自己的宏参数类型来存储别名而不是 ID,从而无需点击内容服务。
      猜你喜欢
      • 1970-01-01
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多