Индекс был вне диапазона. На странице бритвы - PullRequest
0 голосов
/ 12 января 2019

У меня есть основной проект asp.net. В моей модели есть один объект, который называется Brand. Вы можете увидеть это ниже.

public class Brand
{
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    public virtual IList<CategoryBrand> CategoryBrands { get; set; }
    }
}

и это часть моего взгляда, с которой у меня проблема.

<select asp-for="@Model.CategoryBrands[0].CatId">
@foreach (var item in ViewBag.Categories)
{
   <option value="@item.Id">@item.Name</option>
}
</select>

Когда я хочу отредактировать одну из моих сущностей, у которой нет товарных знаков, я получаю эту ошибку

Index was out of range. Must be non-negative and less than the size of the collection

Я понимаю причину ошибки, потому что в коллекции brand.categorybrands ничего нет, , но учтите, что мне нужен этот выбор, потому что в EditBrand кто-то, возможно, захочет добавить категорию на странице редактирования.

1 Ответ

0 голосов
/ 13 января 2019

Кажется, проблема в том, что есть проблема с your ViewBag.Categories. Проверьте ваш ViewBag на его значения, когда нет категорий. Глупым решением было бы добавить проверку, но я предлагаю вместо этого использовать SelectList. SelectList даст вам меньшую гибкость, но большую устойчивость при просмотре бритвы.

Вот как это используется: Раскрывающийся список ASP.NET MVC из списка выбора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...