首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在用Glass绘制Sitecore视图中使用泛型类型

在用Glass绘制Sitecore视图中使用泛型类型
EN

Stack Overflow用户
提问于 2015-07-27 11:35:34
回答 1查看 1.8K关注 0票数 3

设置

模型

virtual是玻璃地图所要求的。

代码语言:javascript
运行
复制
using System.Collections.Generic;
using Glass.Mapper.Sc.Configuration.Attributes;
using Glass.Mapper.Sc.Fields;

namespace Sample
{
    public class Parent<T>
    {
        [SitecoreId]
        public virtual Guid Id { get; set; }
        public virtual string Title { get; set; }
        public virtual IEnumerable<T> Children { get; set; }
    }

    public class Article
    {
        [SitecoreId]
        public virtual Guid Id { get; set; }
        public virtual string Title { get; set; }
        public virtual string Text { get; set; }
    }

    public class Teaser
    {
        [SitecoreId]
        public virtual Guid Id { get; set; }
        public virtual string Title { get; set; }
        public virtual Image Banner { get; set; }
    }
}

视图

被Sitecore引用为视图呈现,模型指向Sample.Parent (参见下面的Sitecore模型定义)。

代码语言:javascript
运行
复制
@inherits Glass.Mapper.Sc.Web.Mvc.GlassView<Sample.Parent<Sample.Article>>

<h1>@Editable(x => x.Title)</h1>
<div class="article-list">
    @foreach (var article in Model.Children)
    {
        <article class="article">
            <h2 class="article-title">@Editable(article, x => x.Title)</h2>
            <div class="article-content">@Editable(article, x => x.Text)</div>
        </article>
    }
</div>
代码语言:javascript
运行
复制
@inherits Glass.Mapper.Sc.Web.Mvc.GlassView<Sample.Parent<Sample.Teaser>>

<h1>@Editable(x => x.Title)</h1>
<div class="teaser-list">
    @foreach (var teaser in Model.Children)
    {
        <article class="teaser">
            <h2 class="teaser-title">@Editable(teaser, x => x.Title)</h2>
            <div class="teaser-banner">@RenderImage(teaser, x => x.Banner)</div>
        </article>
    }
</div>

Sitecore模型定义

这里我不确定我做得对不对。这些是我定义为Sitecore模型的模型类型(在/sitecore/layout/models下)。

  • Sample.Parent`1[T], Sample 也曾尝试过(但未成功):
代码语言:javascript
运行
复制
- `Sample.Parent, Sample`
- `Sample.Parent&grave;1[Sample.Article, Sample], Sample`
- `Sample.Parent<Sample.Article>, Sample`)

  • Sample.Article, Sample
  • Sample.Teaser, Sample

这个是可能的吗?

示例代码是简化的,但是应该能够捕捉到我想要做的事情。基本上,我希望能够使用泛型类型来重用更多的代码。由于外部的限制,我只能使用Glass 3。我看到的错误要么是Sitecore找不到类型,要么是“对象引用没有设置”(出现这种情况时,它似乎使用Sitecore.Mvc.Presentation.RenderingModel, Sitecore.Mvc作为模型)。

还是我疯了?:)有更好的方法来完成这个任务吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-28 11:49:37

我认为格拉斯试图处理泛型字符串的方式可能存在困难(老实说,我从来没有设计它来处理泛型字符串)。

如果您使用的是V4,那么您就不需要在Sitecore中定义一个模型。保留“模型”字段为空,格拉斯应从cshtml文件中的@inherits减速解析该模型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31652030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档