索引超出范围。在剃须刀页面中

时间:2019-01-12 19:25:34

标签: razor asp.net-core

我有一个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 :(得分:0)

问题似乎是your ViewBag.Categories有问题。没有类别时,请检查ViewBag的值。一个愚蠢的解决方法是添加验证,但我的建议是改用SelectListSelectList会给您带来较小的灵活性,但在剃刀视图中具有更高的鲁棒性。

这是它的用法: ASP.NET MVC Dropdown List From SelectList