KendoUI - DropDownListFor - 更新和选择

时间:2013-09-17 21:51:28

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

我有一个像这样设置可编辑的网格:

.Editable(e =>
{
    e.Enabled(true);
    e.Mode(GridEditMode.PopUp);             
    e.TemplateName("MyEdit");
    e.Window(w => w.Title("Gadzooks"));             
}

在MyEdit.cshtml中我有这样的事情:

<div>
    @Html.LabelFor(m => m.Type)
    @Html.EditorFor(m => m.Type, "MyTypeListEdit", Model.Type);
</div>

最后在编辑器MyTypeListEdit.cshtml中:

@model object

@{
    string selectedValue = (string)Model;
}

@{
    SelectList selectList = new SelectList(
        new SelectListItem[] {
            new SelectListItem()
                {                   
                    Text = "Primary",
                    Value = "Primary",
                    Selected = true
                },
            new SelectListItem()
                {
                    Text = "Secondary",
                    Value = "Secondary"                                 
                }   
            },
            "Text",
            "Value"
        );

    @(
        Html.Kendo().DropDownListFor(model => model)
            .Name("Type")
            .BindTo(selectList)
            .DataValueField("Value")
            .DataTextField("Text")      
            .Value(selectedValue)   
    )                       
}

当Model的类型为Secondary时,它仍然选择Primary。 (我假设某处有断开连接)。如何从可编辑()中设置的另一个模板中获取正在引用的编辑器模板,以实际选择适当的值。 Kendo UI文档很糟糕。

1 个答案:

答案 0 :(得分:0)

显然,您需要使用Read来调用此方法以及顶部的@model对象。另外,请勿使用name属性,以使其与自动绑定的属性名称匹配。

@model object
@{
@(Html.Kendo().DropDownListFor(model => model)
        .DataTextField("Text")
        .DataValueField("Value")        
        .DataSource(source =>
            {
                source.Read(read =>
                    {
            read.Action("GetMyList", "MyController");
                    });
            }
        ))
    }