我如何简化这个表情(剃刀)

时间:2019-02-13 19:38:02

标签: c# html asp.net razor model-view-controller

如何简化这个剃刀的表情:

    @if (Model.CarImages == null)
    {
        <text>var CarImages = [];</text>
    }
    else
    {
        <text>var CarImages = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.CarImages));</text>
    }

2 个答案:

答案 0 :(得分:2)

我想理想的方法是让null永远不会成为public IList<SomeType> CarImages { get; set; } = new List<SomeType>(); 。在模型中初始化它:

var CarImages = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.CarImages));

我主要猜测类型,使用您正在使用的任何集合/对象。但是关键是要初始化它。但是,如果要填充它,请确保始终设置有效列表。即使是空的。

那么您的视图就更简单了:

with open(path + '\\' + file, "rU") as f, open(path + '\\' + file + '.fixed', "w") as o:
    reader = csv.reader(f, delimiter=',', dialect="excel")
    writer = csv.writer(o, dialect='excel')
    for row in reader:
        # fix the formatting of the row here
        writer.writerow(row)

基本上,将逻辑尽可能地移至模型。该视图除了绑定模型数据外,应该做的很少(如果有的话),它不必内部检查该数据的有效性。该模型对此负责。

答案 1 :(得分:0)

您可以使用简写的if语句来写这个:

<text>
    var CarImages = @(Model.CarImages == null ? [] :
    Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.CarImages)));
</text>