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