У меня есть ViewModel, которую я использую в сетке. Назовем его DivisionVm
public class DivisionVm {
public int DivisionId
public string Name
public DateTime StartDate { get; set; }
public string Condition
....
}
Когда я хочу обновить модель, я использую собственный шаблон редактора. Поскольку условие принимает некоторые предопределенные строковые значения, я использую раскрывающийся список в шаблоне.
@(Html.Kendo().DropDownListFor(model=>model.Condition)
.DataTextField("Text")
.DataValueField("Condition")
.Events(e => e.Change("change"))
.BindTo(new List<ConditionVm>() {
new ConditionVm() {
Text = "Red",
Condition = "Red"
},
new ConditionVm() {
Text = "Green",
Condition = "Green"
},
new ConditionVm() {
Text = "Green",
Condition = "Green"
}
})
)
ConditionVm — это просто модель представления, которую я использую для привязки.
public class ConditionVm
{
public string Text { get; set; }
public string Condition { get; set; }
}
Моя проблема в том, что когда открывается всплывающий редактор, он показывает текущее значение условия в раскрывающемся списке. Но если я выберу другое значение из списка, кендо не отследит изменение. Поэтому, если я нажму кнопку обновления, viemodel не обновится. Если я изменю другие поля (например, имя), viemodel обновится, но только для этих полей. Условие остается то же самое, даже если я выбрал другое значение из выпадающего списка.
Мой метод обновления контроллера примерно такой
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult DivisionGridUpdate([DataSourceRequest] DataSourceRequest request, DivisionVm division)
{
if (division != null && ModelState.IsValid)
{
......
}
return Json(new[] { division }.ToDataSourceResult(request, ModelState));
}