請參閱以下更新彙總...多選DropDownListFor將不設置默認值,但多選的DropDownList確實
據我所知,使用「爲」優先HTML輔助,但我在與DropDownListFor問題使用時作爲多選。
這個例子(DropDownList的)完美的作品:
@Html.DropDownList(
"ProtocolDisciplines",
new MultiSelectList(Model.Disciplines, "DisciplineId", "Discipline", Model.ProtocolDisciplines.Select(pd => pd.DisciplineId)),
new { @class = "form-control", multiple = "multiple", size = "8" }
)
這個例子(DropDownListFor)完美的作品,除了默認值(一個或多個)不被設置:基於
@Html.DropDownListFor(
model => model.ProtocolDisciplines,
new MultiSelectList(Model.Disciplines, "DisciplineId", "Discipline", Model.ProtocolDisciplines.Select(pd => pd.DisciplineId)),
new { @class = "form-control", multiple = "multiple", size = "8" }
)
最新通報 什麼我正在學習我已經從原文中更新了。這是仍然不起作用的代碼。清楚的是,它正在完美地完成所有的事情,除非它在渲染時沒有選擇默認值。在我正在使用的示例中,只有一個默認值。
@Html.ListBoxFor(
model => model.ProtocolDisciplines,
new MultiSelectList(Model.Disciplines, "DisciplineId", "Discipline", Model.ProtocolDisciplines),
new { @class = "form-control", size = "8" }
)
我已經取得了一定的那個學科和ProtocolDisciplines(屬於協議學科名單)(在數據庫中的所有16個學科名單)是同一類型(DisciplineViewModel)。此外,該類(見下文)僅包含2個屬性(DisciplineId和Discipline)。
我有一個斷點,模型返回到視圖,並且我已驗證Disciplines和ProtocolDisciplines具有預期的值,所以我目前主要關注視圖和ListBoxFor幫助程序。作爲一個說明,我也嘗試使用具有相同行爲的DropDownListFor助手完全相同的代碼)。
我懷疑問題在於創建MultiSelectList。正如你所看到的,我使用重載(IEnumerable ListItems,字符串DataValue,字符串DataText,IEnumerable SelectedValues)。似乎SelectedValues根本就沒有在ListValues中的任何東西上找到匹配,但我無法弄清楚原因。在兩者中使用的類型相同,DataValue和DataTypes名稱與類型的成員相匹配(爲了安全起見)。我知道ListItems是正確的,因爲列表正確地呈現它們。
我不知所措。
參考:
public partial class DisciplineViewModel
{
public Guid DisciplineId { get; set; }
public string Discipline { get; set; }
}
下面是該模型:
public partial class ProtocolViewModelEdit
{
[Key]
public Guid ProtocolId { get; set; }
[Display(Name = "Name")]
public string Protocol { get; set; }
public string ProtocolType { get; set; }
[Display(Name = "Type")]
public Guid ProtocolTypeId { get; set; }
[Display(Name = "Status")]
public Guid ProtocolStatusId { get; set; }
public virtual ICollection<ProtocolTypeViewModel> ProtocolTypes { get; set; }
public virtual ICollection<ProtocolStatusViewModel> ProtocolStatuses { get; set; }
public virtual ICollection<DisciplineViewModel> ProtocolDisciplines { get; set; }
public virtual ICollection<ProtocolXProgramViewModel> ProtocolPrograms { get; set; }
public virtual ICollection<DisciplineViewModel> Disciplines { get; set; }
public virtual ICollection<ProgramViewModel> Programs { get; set; }
}
對多選使用'ListBoxFor'。 –
感謝您的迴應,但是會產生相同的問題。除了未選擇默認值(s)外,一切看起來都很棒。 –
我剛剛從4年前發現這篇文章,但它有最近的反應,這是否有可能這仍然是一個錯誤? [鏈接] https://social.msdn.microsoft.com/Forums/vstudio/en-US/05ee3b35-f3d3-48b4-83f5-ca3d9073624e/mvc-htmlhelper-listboxfor-and-listbox-multiselectlist-bug?forum=netfxbcl –