Как сделать обнуляемый контроль наиболее эффективным? - PullRequest
0 голосов
/ 23 января 2020

К .cs html приближающаяся цена нулевая и возвращенная ошибка "Ссылка на объект не установлена ​​для экземпляра объекта."

 @foreach (var product in ProductsModel)
 {
   <tr>
      <td>product.ProductName</td>
      <td>product.Category</td>
      <td>product.Price.Value.ToString("N2")</td>
   </tr>
  }

Я решил эту проблему следующим образом;

<td>product.Price != null ? product.Price.Value.ToString("N2") : ""</td>

но я ищу лучший путь.

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Вы можете использовать struct вместо классов для ProductsModel, только если ProductsModel - light. Если price - это число, c# автоматически инициализирует его как 0 внутри структуры. Более того, вы можете по умолчанию инициализировать вашу переменную как;

    string price = "";

в конструкторе или через инициализаторы по умолчанию в C#, если цена не зависит от контекста.

0 голосов
/ 23 января 2020

Путь 1: убедитесь, что цена никогда не равна нулю :

class Product{
    ...
    public decimal Price { get; set; } = 0;
    ....
}

Путь 2: syntacti c сахар :

<td>product.Price?.Value.ToString("N2") ?? ""</td>
...