使用自定义视图模型重用umbraco网格

时间:2015-02-18 09:45:12

标签: c# razor umbraco7

我对新的umbraco网格功能不熟悉,我对此有疑问。

我有一篇文章,其中我使用网格功能来显示除该图像之外的一些图像和文本。这很好。

在该页面的属性中,我放置了一个复选框,表示该商品是否可以出售,选中时,该商品应自动显示在待售页面上。

我可以在该页面上获得待售产品,但现在我还想在该页面上显示图像和文字。我创建了一个带有自定义视图模型的List,用于保存每个待售产品的内容。问题是将JObject提供给GetGridHtml函数。这个函数需要一个字符串,而我提供的属性会导致错误。

将网格内容显示在该单独页面上的最佳方法是什么?

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
     var home = CurrentPage.Site();

     List<ForSaleItemsViewModel> forSaleItemsVM = new List<ForSaleItemsViewModel>();

     if(home.Children.Any())
     {        
         foreach(var childPage in home.Children)
         {
             if(childPage.Children.Any())
             {
                 foreach(var child in childPage.Children)
                 {
                     if(child.HasProperty("ForSale") && child.ForSale)
                     {
                           forSaleItemsVM.Add(new ForSaleItemsViewModel
                                            {
                                                ID = 1,
                                                Content = child.Content,
                                                Sold = child.Sold
                                            });
                     }
                }
            }
         }
    }
}

<div class="container">
    @foreach(var item in forSaleItemsVM)
    {
        if (item.Sold)
        {
            <span>SOLD!</span>
        }
        CurrentPage.GetGridHtml(item.Content.ToString(), "bootstrap3");
    }
</div>

1 个答案:

答案 0 :(得分:1)

根据Umbraco论坛,不可能这样做。我得到了这个答案:

  

如果您看到有关网格布局的最佳实践的文档   https://our.umbraco.org/Documentation/Using-Umbraco/Backoffice-Overview/Property-Editors/Built-in-Property-Editors-v7/Grid-Layout-Best-Practices   有一章关于网格布局的限制   https://our.umbraco.org/Documentation/Using-Umbraco/Backoffice-Overview/Property-Editors/Built-in-Property-Editors-v7/Grid-Layout-Best-Practices#Limitations。   使用网格布局的限制是它不适用   重用内容。

     

它说 - 没有托管api可以深入到网格内容中   目标特定单元格内容 - 因此不建议使用网格布局   存储可重复使用的内容 - 它根本就不是为此而设计的   场景。如果您希望在多个页面中重复使用内容,它仍然是   建议您将这些内容存储为单独的内容   节点,因此可以像往常一样存储,缓存和查询。