弹出编辑器中的kendo下拉列表未绑定到viewmodel

时间:2013-10-22 09:35:57

标签: asp.net-mvc-4 kendo-ui kendo-asp.net-mvc

我有一个在网格中使用的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不会更新。如果我更改其他字段(例如名称),则模型正在更新但仅针对这些字段。条件仍然存在即使我从下拉列表中选择了另一个值,也是一样的。

我的控制器更新方法是这样的

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult DivisionGridUpdate([DataSourceRequest] DataSourceRequest  request, DivisionVm division)
    {

        if (division != null && ModelState.IsValid)
        {

           ......

        }


        return Json(new[] { division }.ToDataSourceResult(request, ModelState));
    }

1 个答案:

答案 0 :(得分:0)

您是否尝试过网格设置DDL的列,就像一个foreing Key?

像这样:

columns.ForeignKey(p => p.yourproperty, (System.Collections.IEnumerable)ViewData["myList"], "Text", "Condition");

控制器(在这里填写列表将填写下拉列表:

 ViewData["myList"] = myList.Select(e => new
            {
                Text= e.Text,
                Condition= e.Condition 
            });

在弹出式编辑器中你很简单:

 @Html.EditorFor(model=>model.yourproperty)