MVC 4:如何使DropDownListFor返回0作为optionLabel值

本文关键字:作为 optionLabel 返回 DropDownListFor 何使 MVC | 更新日期: 2023-09-27 18:27:08

我有一个带有多个DropDownListFors的创建视图。每次创建新对象时,DropDownListFors中只有1个应该有值,我希望其他对象在选择optionLabel时返回0作为结果。

如何将0指定为DropDownListFor的optionLabel的值?

编辑:下面是我的DropDownListFor代码的一个例子:

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

当我渲染页面时,它会创建一个顶部无的列表,如下所示:

<option value>None</option>

我希望它是这样的:

<option value="0">None</option>

MVC 4:如何使DropDownListFor返回0作为optionLabel值

在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"))

插入一个新的空字符串,下面是一个示例。

@Html.DropDownListFor(x => x.ProjectID, Model.Projects, string.Empty)