1

我有一个 ASP.NET MVC 应用程序,我使用 Kendo UI 作为带有 HTML Helpers 的下拉列表。当我想为用于编辑数据的视图设置默认值时,.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 方法不会更改它。它改变了 的值,这确实是我想要的,但没关系,因为它没有显示。

4

1 回答 1

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
         )

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

于 2013-06-11T07:25:03.163 回答