我有一个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方法不会更改它。它改变了它的价值,这正是我想要的,但它无所谓因为它没有显示。
答案 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无法找到该值