首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Episerver街区

Episerver街区
EN

Stack Overflow用户
提问于 2017-11-08 12:04:30
回答 1查看 641关注 0票数 1

所以我尝试创建我的第一个街区。这个块的想法是从api端点获取最新消息,然后在网站的不同页面上显示它。

我所理解的是

创建一个块类型,如下所示

代码语言:javascript
复制
public class NewsBlock : BlockData
{

            [CultureSpecific]
            [Display(
                Name = "Heading",
                Description = "Add a heading.",
                GroupName = SystemTabNames.Content,
                Order = 1)]
            public virtual String Heading { get; set; }

}

然后我为我的块创建了一个模型

代码语言:javascript
复制
public class LatestNewsViewModel 
{
  public NewsBlock NewsBlock { get; private set; }
  public IEnumerable<dynamic> LatestNews { get; set; }

  public LatestNewsViewModel(NewsBlock latestNewsBlock, IEnumerable<dynamic> latestNews) 
  {
  NewsBlock = latestNewsBlock;
  LatestNews = latestNews;
}
}

然后我创建了一个块控制器,在索引操作中,我从我的api中获取数据并填充块容器数据,然后创建一个部分视图,然后从控制器将数据传递到视图中,然后从仪表板上添加我想要的块到站点上的任何位置。

就这样做吗?还是我漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-08 12:55:09

这似乎是正确的。请注意,对于如何通过控制器将数据从内容模型获取到实际视图,有许多方法和意见。下面的例子是我能想到的最简单的场景。

代码语言:javascript
复制
public class NewsBlock : BlockData
{    
            [CultureSpecific]
            [Display(
                Name = "Heading",
                Description = "Add a heading.",
                GroupName = SystemTabNames.Content,
                Order = 1)]
            public virtual String Heading { get; set; }

}

控制器

代码语言:javascript
复制
public class NewsBlockController : BlockController<NewsBlock>
{
    // GET: NewsBlock
    public override ActionResult Index(NewsBlock currentBlock)
    {
        // apistuff
        ApiModelWhatever returnFromApi = "whatever";

        var model = new LatestNewsViewModel(currentBlock, returnFromApi);
        return PartialView(model);
    }
}

ViewModel

代码语言:javascript
复制
public class LatestNewsViewModel 
{
    public string Heading { get; private set; }
    public ApiModelWhatever ReturnFromApi { get; private set; }

    public LatestNewsViewModel(NewsBlock latestNewsBlock, ApiModelWhatever returnFromApi) 
    {
        Heading = latestNewsBlock.Heading;
        ReturnFromApi = returnFromApi;
    }
}

视图

代码语言:javascript
复制
@model LatestNewsViewModel

<h2>@Html.PropertyFor(model => model.Heading)</h2>
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47179294

复制
相关文章

相似问题

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