2013-02-27 68 views
2

出於好奇,因爲它很容易變通:this documentation for DropDownListForoptionLabel可以是null。但是,如果我嘗試與optionLabel編譯爲null我得到一個調用是模棱兩可的錯誤,因爲也有一種方法,其中object在同一位置和null顯然是不明確的。所以是a)文檔錯誤b)有一種方法來編譯和指定我的意思是哪種方法c)文檔意味着不同的方法optionLabel可以是null而不會導致調用不明確錯誤?DropDownListFor optionLabel null給出「呼叫不明確」

編輯:

我現在認識到其中optionLabel作爲一個字符串變量傳遞過程中的文檔指的情況下,這是沒有意義的總是null通過。例如:

string optionLabel = null; 

// Possibly do something with optionLabel 

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

你能分享你是怎麼稱呼它的嗎?你有其他的擴展方法嗎? – 2013-02-27 13:42:49

回答

3

該文檔是錯誤的。您不能有:

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

因爲這與following overload含糊不清。

或者,如果你堅持這麼多,通過空,你可以使用命名參數來澄清對超載:

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

我本人經常使用命名參數,使因過載的gazillions的代碼更易讀,微軟寫給HTML助手。

+1

該值仍可爲'null';你只需要提供一些'(string)null'的提示來告訴編譯器你正在尋找哪個超載。 – 2013-02-27 13:47:37

+0

我更喜歡在這種情況下使用命名參數,因爲它使代碼更具可讀性。 – 2013-02-27 13:49:06

+0

謝謝,我不知道有關命名參數或使用'(字符串)null'。你會打電話給一個類型化的null嗎? – 2013-02-27 14:05:22

0

也許轉換爲字符串可以解決問題?

optionLabel:(string)null 
+0

這看起來頗爲Objective-C'y :-) – 2013-02-27 13:49:00