【问题标题】:kendo dropdownlist in pop up editor not binding to viewmodel弹出编辑器中的剑道下拉列表未绑定到视图模型
【发布时间】:2013-10-22 09:35:57
【问题描述】:

我有一个在网格中使用的 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));
    }

【问题讨论】:

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


    【解决方案1】:

    您是否尝试过在网格中将 DDL 的列设置为外键?

    像这样:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多