所以我尝试创建我的第一个街区。这个块的想法是从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中获取数据并填充块容器数据,然后创建一个部分视图,然后从控制器将数据传递到视图中,然后从仪表板上添加我想要的块到站点上的任何位置。
就这样做吗?还是我漏掉了什么?
发布于 2017-11-08 12:55:09
这似乎是正确的。请注意,对于如何通过控制器将数据从内容模型获取到实际视图,有许多方法和意见。下面的例子是我能想到的最简单的场景。
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);
}
}ViewModel
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>https://stackoverflow.com/questions/47179294
复制相似问题