例如,您使用参数的重载DropDownListFor
(optionLabel
您的“选择任务”参数。
如果未选择任何项目,则将其视为“已选择选项”,并为model.projecttaskid
.
0
最简单的方法是在创建列表时添加一个具有值的元素( ViewData["MyTasks"]
)
例如:
Value = 0;
Text = "Select Task;
并使用不带 optionLabel 的 DropDownListFor 重载。
[顺便说一句,使用 ViewModels 而不是 ViewData 会是一件好事,但这是另一个问题]
*编辑 *
我们确实使用一些扩展方法来管理这些情况:
public static IEnumerable<SelectListItem> ToSelectListItem<T, TValue, TText>(
this IEnumerable<T> enumerable,
Func<T, TText> text,
Func<T, TValue> value)
{
return enumerable.Select(item => new SelectListItem
{
Text = text(item).ToString(),
Value = value(item).ToString()
}).AsEnumerable();
}
public static IEnumerable<SelectListItem> WithDefaultZeroValue(this IEnumerable<SelectListItem> selectListItems, string chooseText/* = ChooseText*/)
{
IList<SelectListItem> items = selectListItems.ToList();
items.Insert(0, new SelectListItem { Value = "0", Text = chooseText });
return items.AsEnumerable();
}
用法
var myList = mySourceForDropDown.ToSelectListItem(m => m.TextField, m => m.ValueField)
.WithDefaultZeroValue("SelectTask")