2

回避するのは簡単なので、好奇心から: this documentation forDropDownListForは、それoptionLabelnull. ただし、呼び出しを取得してコンパイルしようとするとoptionLabel、あいまいなエラーになります。これは、同じ位置にあるメソッドがあり、明らかにあいまいであるためです。a) ドキュメンテーションが間違っている b) どのメソッドをコンパイルして指定する方法があるか c) ドキュメンテーションは、呼び出しを発生させずに実行できる別のメソッドを意味します。あいまいなエラーですか?nullobjectnulloptionLabelnull

編集:

もちろん、ドキュメントはoptionLabelが文字列変数として渡される状況を意味していることに気付きました。常に を渡すのは意味がありませんnull。例えば:

string optionLabel = null;

// Possibly do something with optionLabel

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

2 に答える 2

3

ドキュメントが間違っています。あなたは持つことができません:

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

これは とあいまいだからfollowing overloadです。

または、 null を渡すことを強く主張する場合は、名前付きパラメーターを使用してオーバーロードを明確にすることができます。

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

個人的には、Microsoft が HTML ヘルパー用に膨大な量のオーバーロードを記述したため、コードを読みやすくするために名前付きパラメーターをよく使用します。

于 2013-02-27T13:45:15.277 に答える
0

おそらく、文字列に変換すると問題が解決するでしょうか?

 optionLabel:(string)null
于 2013-02-27T13:45:23.350 に答える