Kendo UI DropDownListFor选定的值

时间:2013-05-10 16:11:11

标签: c# asp.net-mvc razor drop-down-menu kendo-ui

我有一个ASP.NET MVC应用程序,我使用Kendo UI作为HTML Helpers的下拉列表。当我想为用于编辑数据的View设置默认值时.Value()不起作用。这是我的视图代码:

@(Html.Kendo().DropDownListFor(m => m.UserName)
         .Name("userName")
         .DataTextField("UserName")
         .DataValueField("UserId")
         .BindTo(Model.Mechanics)
         .Value(Model.UserName)
         )

这是获取数据的Action的代码:

public ActionResult EditServiceCart(int id)
        {
        var servCart = db.ServiceCarts.Where(x => x.CarId == id).SingleOrDefault();

        var mechanics = db.UserProfiles.Select(m => new MechanicsViewModel
        {

            UserId = m.UserId,
            UserName = m.UserName

        }).ToList();

        var model = new EditServiceCartViewModel
        {

            ServiceCartId = servCart.ServiceCartId,
            Mechanics = mechanics,
            UserName = servCart.UserName

        };

        return View(model);
    }

如果我使用硬编码绑定(例如.BindTo(new string [] {“Mechanic 1”,“Mechanic 2”,“Mechanic 3”}))。Value()工作正常,但我不是。我在HTML中看到了为下拉列表显示的值,而.Value方法不会更改它。它改变了它的价值,这正是我想要的,但它无所谓因为它没有显示。

1 个答案:

答案 0 :(得分:3)

您的代码应为

@(Html.Kendo().DropDownListFor(m => m.UserName)
         .Name("userName")
         .DataTextField("UserName")
         .DataValueField("UserId")
         .BindTo(Model.Mechanics)
         .Value(Model.UserId) // Model.UserId(or something like that) NOT Model.UserName
         )

因为您告诉剑道:“我将使用UserId作为DropdownList值”。 当您将 Model.UserName 传递给 .Value()方法时,Kendo UI无法找到该值