2013-05-10 99 views
1

我有一個ASP.NET MVC應用程序,我使用Kendo UI作爲HTML Helpers的下拉列表。當我想爲用於編輯數據的視圖設置默認值時.Value()不起作用。這裏是我的視圖代碼:Kendo UI DropDownListFor選定的值

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

這是爲獲取數據操作的代碼:

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(新的String [] { 「機械師1」,「機械師2」,「機械師3」})).Value()工作正常,但與我不是。我看到在HTML中,爲下拉菜單顯示的值處於和.Value方法不會更改它。它改變了這個值,這真的是我想要的,但它不是因爲它沒有顯示。

回答

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無法找到該值