【问题标题】: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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-11
        • 1970-01-01
        • 1970-01-01
        • 2011-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多