Episerver 中的块
Blocks in Episerver
所以我正在尝试创建我的第一个块。此块的想法是从 api 端点获取最新消息,然后将其显示在网站的不同页面上。
我理解的是这样的
创建一个块类型,像这样
public class NewsBlock : BlockData
{
[CultureSpecific]
[Display(
Name = "Heading",
Description = "Add a heading.",
GroupName = SystemTabNames.Content,
Order = 1)]
public virtual String Heading { get; set; }
}
然后我为我的块创建一个模型
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 获取数据并填充块容器数据
然后我创建一个局部视图,然后从控制器将数据传递到视图中
然后,我可以在仪表板上将我的块添加到网站上任何我想要的地方
是这样吗?还是我遗漏了什么?
这似乎是正确的。请注意,关于如何通过控制器将数据从内容模型获取到实际视图,有很多方法和意见。下面的例子只是我能想到的最简单的场景。
public class NewsBlock : BlockData
{
[CultureSpecific]
[Display(
Name = "Heading",
Description = "Add a heading.",
GroupName = SystemTabNames.Content,
Order = 1)]
public virtual String Heading { get; set; }
}
控制器
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);
}
}
视图模型
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;
}
}
查看
@model LatestNewsViewModel
<h2>@Html.PropertyFor(model => model.Heading)</h2>
所以我正在尝试创建我的第一个块。此块的想法是从 api 端点获取最新消息,然后将其显示在网站的不同页面上。
我理解的是这样的
创建一个块类型,像这样
public class NewsBlock : BlockData
{
[CultureSpecific]
[Display(
Name = "Heading",
Description = "Add a heading.",
GroupName = SystemTabNames.Content,
Order = 1)]
public virtual String Heading { get; set; }
}
然后我为我的块创建一个模型
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 获取数据并填充块容器数据 然后我创建一个局部视图,然后从控制器将数据传递到视图中 然后,我可以在仪表板上将我的块添加到网站上任何我想要的地方
是这样吗?还是我遗漏了什么?
这似乎是正确的。请注意,关于如何通过控制器将数据从内容模型获取到实际视图,有很多方法和意见。下面的例子只是我能想到的最简单的场景。
public class NewsBlock : BlockData
{
[CultureSpecific]
[Display(
Name = "Heading",
Description = "Add a heading.",
GroupName = SystemTabNames.Content,
Order = 1)]
public virtual String Heading { get; set; }
}
控制器
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);
}
}
视图模型
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;
}
}
查看
@model LatestNewsViewModel
<h2>@Html.PropertyFor(model => model.Heading)</h2>