Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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
C# 将umbraco网格与自定义viewmodel一起重用_C#_Razor_Umbraco7 - Fatal编程技术网

C# 将umbraco网格与自定义viewmodel一起重用

C# 将umbraco网格与自定义viewmodel一起重用,c#,razor,umbraco7,C#,Razor,Umbraco7,我不熟悉新的umbraco网格功能,对此我有一个问题 我有一个页面,其中有一篇文章,我使用网格功能来显示图像之外的一些图像和文本。这很好用 在该页面的属性中,我设置了一个复选框,表示该文章是否出售,选中该复选框后,该产品应自动显示在待售页面上 我可以在那个页面上找到要出售的产品,但现在我还想在那个页面上显示图像和文本。我创建了一个带有自定义viewmodel的列表,用于保存每个待售产品的内容。问题在于向GetGridHtml函数提供JObject。这个函数需要一个字符串,我正在提供导致错误的属性

我不熟悉新的umbraco网格功能,对此我有一个问题

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

在该页面的属性中,我设置了一个复选框,表示该文章是否出售,选中该复选框后,该产品应自动显示在待售页面上

我可以在那个页面上找到要出售的产品,但现在我还想在那个页面上显示图像和文本。我创建了一个带有自定义viewmodel的列表,用于保存每个待售产品的内容。问题在于向GetGridHtml函数提供JObject。这个函数需要一个字符串,我正在提供导致错误的属性

获取网格在单独页面上显示的内容的最佳方式是什么

@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>
@继承Umbraco.Web.Mvc.UmbracoTemplatePage
@{
var home=CurrentPage.Site();
List forSaleItemsVM=新列表();
if(home.Children.Any())
{        
foreach(home.childs中的var childPage)
{
if(childPage.Children.Any())
{
foreach(childPage.childs中的var child)
{
if(child.HasProperty(“ForSale”)&child.ForSale)
{
添加(新的ForSaleItemsViewModel
{
ID=1,
Content=child.Content,
售出的,售出的
});
}
}
}
}
}
}
@foreach(forSaleItemsVM中的var项)
{
如果(已售出项目)
{
出售!
}
CurrentPage.GetGridHtml(item.Content.ToString(),“bootstrap3”);
}

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

如果您看到有关网格布局最佳实践的文档 有一章是关于网格布局的限制的 . 使用网格布局的限制之一是它不适合 重复使用的内容

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