2012-04-15 76 views
4

我有以下編輯器模板名爲'DropDown.cshtml'。 list部分工作正常,並且模板使用一些巫毒我從ViewData獲得所需的SelectList。控制器將視圖模型中的所有選擇列表放入ViewData,事物的列表方面沒有任何問題。爲什麼DropDownListFor不能識別我的編輯器模板中的選定值?

@{ 
    var list = this.GetModelSelectList(); 
} 
@Html.DropDownListFor(m => Model, list) 

我使用外鍵視圖模型屬性此模板像這樣的:

[Required] 
[UIHint("DropDown", "MVC", "SelectListName", "JobLevelSelectList")] 
[Display(Name = "Job Level")] 
public Guid? JobLevelId { get; set; } 

public SelectList JobLevelSelectList { get; set; } 

在控制器方面,JobLevelId是否具有正確的價值立即執行的觀點之前,還沒有項目就在選定呈現select元素。或者說,總是選擇選擇列表中的第一項。

爲什麼DropDownListFor在我的編輯器模板中使用時忽略了屬性值,但在直接調用時工作正常?

+0

請參閱http://stackoverflow.com/questions/10039006/mvc-dropdownlist-selectedvalue-not-displaying-correctly – RickAndMSFT 2012-04-15 16:25:38

+0

@RickAndMSFT,我沒有看到任何問題或其答案真的適用於此。接受的答案是'DropDownListFor'的lambda中的model屬性覆蓋了選擇列表的* selected ID *。這對我的'lambda值'問題僅僅在我的編輯器模板中被忽略了,而不是在我的原始DDL中沒有幫助。 – ProfK 2012-04-15 20:59:05

+1

如果'ExpressionHelper.GetExpressionText()'(這是幫助程序用於查找屬性名稱)不適用於'm => Model',我不會感到驚訝。 – bhamlin 2012-04-15 23:23:57

回答

3

這是不幸的a known bug在MVC3(我還沒有嘗試在MVC 4測試版,看看它是否修復)。

我曾經使用過的工作是在DropDownListFor綁定的集合中相應地手動設置Selected屬性,但它並不理想,但工作起來。

+0

謝謝。關閉以查看我是否可以在我的編輯器模板中執行此解決方法。 – ProfK 2012-04-19 17:11:39

相關問題