Выпадающий список кендо во всплывающем редакторе не привязывается к модели представления

У меня есть 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));
    }

person g bas    schedule 22.10.2013    source источник


Ответы (1)


Вы пытались в сетке установить столбец 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)
person Jero Franzani    schedule 04.11.2013