2013-03-19 59 views
0

希望有人能幫助 - 這已被竊聽我要2小時左右 - 它可能是一些簡單的:)MVC參數不綁定到控制器動作(KENDO UI)

劍道UI電網將請求發送到我的控制器

http://localhost:1418/user/update?UserID=1&UserName=Admin&RoleName=Admin&Email=c.j.hannon%40gmail.com&Active=true&Company%5BCompanyID%5D=1&Company%5BCompanyName%5D=asd 

但是,控制器類「公司」沒有被活頁夾綁定?任何一個可以幫助我的視圖模型和控制器動作簽名低於:

[HttpGet] 
     public JsonResult Update(UserViewModel model) 
     { 
      svcUser.UpdateUser(new UpdateUserRequest() { 
       UserID=model.UserID, 
       RoleID = model.RoleName, 
       Email = model.Email, 
       Active = model.Active.GetValueOrDefault(false), 
       UserName = model.UserName 
      }); 

      return Json("", JsonRequestBehavior.AllowGet); 
     } 

public class UserViewModel 
    { 
     public int UserID { get; set; } 
     public string UserName { get; set; } 
     public string RoleName { get; set; } 
     public string Email { get; set; } 
     public bool? Active { get; set; } 
     public CompanyViewModel Company { get; set; } 
    } 

乾杯 克雷格

回答

1

有幾件事情。你的直接問題是公司被映射到一個複雜的對象而不是一個原始類型。 Kendo Grid沒有這樣做(截至撰寫本文)。只是猜測,但你可能想在網格上設置外鍵綁定,並從列表框中傳回公司的Id。這並不像你想象的那麼糟糕,它會立即解決你的問題並且看起來不錯。

也許個人的品味,但似乎是一個慣例。使用後綴ViewModel作爲綁定到View的模型,並使用業務對象的後綴Model。所以Kendo Grid總是裝有一個Model。

例:

BUT!這僅僅是一個例子,你最好是用Ajax加載Grid,因爲我假設你在Grid中有很多用戶,儘管你可以使用List來綁定ViewModel。但公司名單可能每次都是相同的,因此,將它映射到View只是爲了代替這一點,而不是每當您進行行編輯時加載Ajax。 (並不總是如此)

+0

嗨托盤,謝謝你幫助很多。 – 2013-03-20 09:14:53

相關問題