【问题标题】:How can I simplify this expression (razor)我怎样才能简化这个表达式(剃刀)
【发布时间】:2019-07-07 18:06:55
【问题描述】:
我怎样才能简化这个剃刀表达式:
@if (Model.CarImages == null)
{
<text>var CarImages = [];</text>
}
else
{
<text>var CarImages = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.CarImages));</text>
}
【问题讨论】:
标签:
c#
html
asp.net
razor
model-view-controller
【解决方案1】:
我想理想的方法是让CarImages 永远不会是null。在模型中初始化它:
public IList<SomeType> CarImages { get; set; } = new List<SomeType>();
我主要猜测类型,使用您正在使用的任何集合/对象。但关键是初始化它。无论您如何填充它,请确保您始终设置一个有效的列表。即使是空的。
那么你的观点就更简单了:
var CarImages = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.CarImages));
基本上,尽可能将逻辑移到模型中。视图除了绑定到模型数据之外应该做的很少(如果有的话),它不应该在内部检查该数据的有效性。模型对此负责。
【解决方案2】:
你可以这样写 if else 语句:
<text>
var CarImages = @(Model.CarImages == null ? [] :
Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.CarImages)));
</text>