Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 扩展SelectList类后,SelectListItem未通过下拉菜单进行设置_C#_Selectlist_Selectlistitem - Fatal编程技术网

C# 扩展SelectList类后,SelectListItem未通过下拉菜单进行设置

C# 扩展SelectList类后,SelectListItem未通过下拉菜单进行设置,c#,selectlist,selectlistitem,C#,Selectlist,Selectlistitem,我试图扩展SelectListItem类以添加另一个名为CardColor的属性。但是,当我尝试访问控制器中的属性时,我得到 NullReferenceException:对象引用未设置为对象的实例…. 返回视图(“StringView”,c.IssueSelected.CardColor) 控制器: [HttpPost] public async Task<ActionResult> CardCreate(UpdateCardFormOptions c) { return

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

NullReferenceException:对象引用未设置为对象的实例….
返回视图(“StringView”,c.IssueSelected.CardColor)

控制器:

[HttpPost]
public async Task<ActionResult> CardCreate(UpdateCardFormOptions c)
{
    return View("StringView", c.IssueSelected.CardColor);
}
[HttpPost]
公共异步任务卡创建(UpdateCardFormOptions c)
{
返回视图(“StringView”,c.IssueSelected.CardColor);
}
看法

@使用(@Html.BeginForm())
{
问题类别*:@Html.DropDownListFor(c=>@Model.IssueSelected,Model.IssueList,new{@class=“form control”,@style=“width:350px”})

}
型号:

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; }
}
public IssueSelectListItem IssueSelected{get;set;}
public List IssueList=新列表(){
新问题selectListItem(){Text=“xxx”,Value=“yyy”,CardColor=“pink”},
};
公共类问题SelectListItem:SelectListItem
{
公共字符串CardColor{get;set;}
}
这给了我一个线索,结果是我需要在视图中设置值CardColor,我不能只设置对象等价物。我的视图需要根据我的下拉选择设置CardColor,如下所示:

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


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

您的
问题SelectListItem
有点毫无意义,因为
DropDownListFor()
方法接受
IEnumerable
作为第二个参数,您的附加
CardColor
属性被忽略。而且您的
IssueSelected
属性没有任何意义,ans也永远不会正确绑定(您无法将
绑定到复杂对象-它只返回一个简单的值)。现在还不清楚你想用你的电脑做什么code@StephenMuecke我的目标是将多个参数传递到SelectList并能够保存所有参数,例如,根据他们选择的SelectListItem,我还想保留与iTunes关联的CardColor的信息。如果您不创建自己的扩展方法来创建
,则您不能传递
文本
属性以外的任何内容(如果您检查正在生成的html,您将看到没有
CardColor=“pink”
属性。在任何情况下,
只回发一个简单的值—您所选选项的值(在您的情况下,该值将是
“xxx”
<p><label>Issue Category*:</label>  @Html.DropDownListFor(c => @Model.IssueSelected.CardColor, Model.IssueList, new { @class = "form-control", @style = "width: 350px" })</p>