0

希望有人可以提供帮助-这已经困扰了我大约 2 个小时-这可能很简单:)

Kendo UI Grid 向我的控制器发送请求

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; }
    }

干杯克雷格

4

1 回答 1

1

一些东西。您的直接问题是 Company 映射到复杂对象而不是原始类型。Kendo Grid 只是不这样做(在撰写本文时)。只是猜测,但您可能想在 Grid 上设置外键绑定,然后从列表框中传回公司的 ID。这并不像您想象的那么糟糕,它会立即解决您的问题并且看起来也不错。

也许是个人品味,但似乎是一种惯例。对绑定到您的视图的模型使用后缀 ViewModel,而对您的业务对象使用后缀模型。所以剑道网格总是填充有模型。

前任。:

public class UserModel
{
    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 int CompanyID { get; set; }
}
public class CompanyModel
{
    public int ID { get; set; }
    public string Name { get; set; }
}
public class UserViewModel
{
    public UserModel UserModel { get; set; }
    public IList<CompanyModel> Companies { get; set; }
}

public ActionResult UserEdit(string id)
{
    var model = new UserViewModel();
    model.UserModel = load...
    model.Companies = load list...
    return View(model);
}

@model UserViewModel
...
column.ForeignKey(fk => fk.CompanyId, Model.Companies, "ID", "Name")
(Razor Notation)

但!这只是一个示例,最好使用 Ajax 使用 IList 加载 Grid,因为我假设您一次在 Grid 中有许多用户,尽管您也可以使用 List 绑定 ViewModel。但是公司列表可能每次都相同,因此将其映射到视图只是这样,而不是每次进行行编辑时都加载它。(并非总是如此)

于 2013-03-20T01:43:23.497 回答