我有一个带有多个下拉列表的创建视图。每次创建一个新对象时,只有一个dropdownlistfors应该有一个值,我希望其他对象在optionlabel被选中时返回0作为结果。
如何将0指定为dropdownlistfor的optionlabel的值?
编辑:
下面是我视图中代码的dropdownlist示例:

@Html.DropDownListFor(model => model.cardReward.ID, new SelectList(ViewBag.cardReward, "Id","Name"), "None")

当我呈现页面时,它会创建一个列表,顶部没有任何内容,如下所示:
<option value>None</option>

我希望是这样:
<option value="0">None</option>

最佳答案

documentation for DropDownFor中,optionLabel参数(其中传递“none”)描述为:
默认空项的文本。
所以这个设计总是空的。您需要在选择列表中添加一个附加项才能获得0值。
我使用了以下扩展方法来完成此任务(很抱歉,未经测试,可能有小错误):

public IEnumerable<SelectListItem> InsertEmptyFirst(this IEnumerable<SelectListItem> list, string emptyText = "", string emptyValue = "")
{
    return new [] { new SelectListItem { Text = emptyText, Value = emptyValue } }.Concat(list);
}

您可以这样使用它:
@Html.DropDownListFor(model => model.cardReward.ID, new SelectList(ViewBag.cardReward, "Id","Name").InsertEmptyFirst("None", "0"))

07-24 09:32