我KendoUI多選只返回第一個選定的值,如果沒有被改變。KendoUI MVC多重選擇 - 在某些情況下,只有一個返回值
當我加載的ViewPage,將MultiSelect與數據和多個選擇正確填充。當我現在繼續保存數據而沒有更改任何內容(!)時,傳送到我的控制器的模型(大部分時間,沒有可辨別的模式)只包含合適字段中的第一個選定項目。如果我添加新的選擇,則只有先前選擇的項目中的第一個與新選擇的項目一起返回。
如果我使用.AutoBind(假的),然後單擊一次到現場,然後外面再不必去/選擇任何內容,轉移到我的控制器模型包含對儲蓄的全部內容。
對於同一ViewPage中的多個MultiSelect(在不同的數據上),在一個MultiSelect上使用.AutoBind(false)就足夠了(隨後的點擊如上),以便所有MultiSelects突然返回所選的全部範圍值。
誰能請解釋這種奇怪的行爲對我來說,甚至可能有一個修復?在視圖
兩種不同的實現方式中,其中兩個顯示相同的行爲(GetDepotList()返回類似的內容到計算機[「DepotList」]):
@model List<LoadingUnitViewModel>
[...]
//Version 1
@(Html.Kendo().MultiSelectFor(m => m[i].FK_Depots)
.Name("[" + i.ToString() + "]." + "FK_Depots")
.Placeholder(Localize((string)ViewData["ControllerName"], "ChooseDepot"))
.DataValueField("Value")
.Value(Model[i].FK_Depots)
.DataTextField("Text")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetDepotList", (string)ViewData["ControllerName"]);
})
.ServerFiltering(true);
})
.HtmlAttributes(new { id = "_" + i + "__FK_Depots"})
)
//Version 2
@(Html.Kendo().MultiSelectFor(m => m[i].FK_Depots)
.Name("["+i.ToString()+"]."+"FK_Depots")
.Placeholder(Localize((string)ViewData["ControllerName"], "ChooseDepot"))
.BindTo(new MultiSelectList((System.Collections.IEnumerable)ViewData["DepotList"], "Id", "Name", Model[i].FK_Depots))
)
編輯: 按照要求:所述的相關部分在LoadingUnitViewModel:
public class LoadingUnitViewModel
{
[Editable(false)]
[Display(Name = "Id")]
public int Id { get; set; }
[Required]
[Display(Name = "Name")]
public string Name { get; set; }
[Display(Name = "FK_Depots")]
public List<string> FK_Depots { get; set; }
}
你的'LoadingUnitViewModel'看起來像什麼? –
已被編輯爲原始文章。 – MilConDoin
你有使用AJAX綁定的原因嗎?我有一個想法,但不需要這樣綁定。 –