首页 > 解决方案 > 扩展 SelectList 类后,SelectListItem 未通过下拉菜单设置

问题描述

我正在尝试扩展 SelectListItem 类以添加另一个名为 CardColor 的属性。但是,当我尝试访问控制器中的属性时,我得到

NullReferenceException:对象引用未设置为对象的实例....
return View("StringView", c.IssueSelected.CardColor);

控制器:

[HttpPost]
public async Task<ActionResult> CardCreate(UpdateCardFormOptions c)
{
    return View("StringView", c.IssueSelected.CardColor);
}

看法

@using (@Html.BeginForm())
{
<p><label>Issue Category*:</label>  @Html.DropDownListFor(c => @Model.IssueSelected, Model.IssueList, new { @class = "form-control", @style = "width: 350px" })</p>
}

模型:

public IssueSelectListItem IssueSelected { get; set; }


 public List<IssueSelectListItem> IssueList = new List<IssueSelectListItem>() {
            new IssueSelectListItem() {Text="xxx", Value="yyy",CardColor="pink"},
};

public class IssueSelectListItem : SelectListItem
{
    public string CardColor { get; set; }
}

标签: c#selectlistselectlistitem

解决方案


这篇文章给了我一个线索,原来我需要在视图中设置值 CardColor,我不能只设置对象等效。我的视图需要根据我的下拉选项设置 CardColor,如下所示:

<p><label>Issue Category*:</label>  @Html.DropDownListFor(c => @Model.IssueSelected.CardColor, Model.IssueList, new { @class = "form-control", @style = "width: 350px" })</p>

不会接受我自己的答案,仍然希望有人有更好的答案,这只是解决了我的直接问题


推荐阅读