2013-03-19 2 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; } 
    } 

Приветствия Craig

ответ

1

Несколько вещей. Ваша непосредственная проблема заключается в том, что компания сопоставляется с сложным объектом, а не с примитивным типом. Kendo Grid просто этого не делает (на момент написания этой статьи). Просто гадать, но вы, вероятно, хотите настроить привязку внешнего ключа на Grid и просто передать идентификатор компании из списка. Это не так плохо, как вы думаете, и это немедленно устранит вашу проблему и будет выглядеть хорошо.

Возможно, индивидуальный вкус, но, похоже, конвенция. Используйте суффикс ViewModel для модели, привязанной к вашему представлению, и просто модель суффикса для ваших бизнес-объектов. Таким образом, сетка Кендо всегда заполнена моделью.

Ex .:

НО! Это просто пример, вам лучше с Ajax загружать Grid с IList, потому что я предполагаю, что у вас есть много пользователей в Grid сразу, хотя вы также можете привязать сервер к ViewModel со списком. Но список компаний, вероятно, один и тот же каждый раз, поэтому сопоставьте его с View just liek, а не Ajax загружайте его каждый раз, когда вы редактируете строку. (не всегда верно)

+0

Привет Лоток, спасибо, это помогло много. –

Смежные вопросы