我有一个在网格中使用的 ViewModel。让我们将其命名为 DivisionVm
public class DivisionVm {
public int DivisionId
public string Name
public DateTime StartDate { get; set; }
public string Condition
....
}
当我想更新模型时,我使用自定义编辑器模板。因为 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; }
}
我的问题是,当弹出编辑器打开时,它会在下拉列表中显示当前条件值。但是,如果我从列表中选择另一个值,kendo 不会跟踪更改。因此,如果我按下更新按钮 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));
}