DropDownListFor optionLabel null给出“call is ambiguous”

时间:2013-02-27 13:41:36

标签: c# asp.net-mvc

出于好奇,因为它很容易解决:this documentation for DropDownListForoptionLabel可以是null。但是,如果我尝试使用optionLabel作为null进行编译,则会出现调用不明确的错误,因为还有一种方法可以使用object位置和null显然是模棱两可的。那么a)文档错误b)有一种方法来编译和指定我的意思c)文档意味着一种不同的方法optionLabel可以是null而不会导致调用是不明确的错误?

编辑:

我现在意识到文档当然意味着optionLabel作为字符串变量传递的情况,总是传递null是没有意义的。例如:

string optionLabel = null;

// Possibly do something with optionLabel

@Html.DropDownListFor(x => x.Name, selectList, optionLabel)

2 个答案:

答案 0 :(得分:3)

文档错误。你不能拥有:

@Html.DropDownListFor(x => x.Value, Model.Values, null)

因为这与following overload不明确。

或者如果你坚持要传递null,你可以使用命名参数消除歧义的歧义:

@Html.DropDownListFor(x => x.Name, new SelectList(null), optionLabel: null)

就个人而言,我经常使用命名参数来使代码更具可读性,因为Microsoft为HTML帮助程序编写了大量的重载。

答案 1 :(得分:0)

也许转换为字符串会解决问题?

 optionLabel:(string)null