结合查询字符串在ASP.NET MVC对象?(Binding query string to obj

2019-11-01 04:47发布

我有我已绑定到IEnumerable的模型网格控制。 我会在我的控制器如何以往要保存的记录。 我使用的网格控件是一个从Telerik的“剑道”。 请求回是一个字符串,我希望得到我的绑定对象“CustomerViewModel”怎么过,当我掠过我的对象是回来空。 我曾尝试不同类型的信息,似乎为我指定我想传递的属性才能正常工作。请在下面找到的代码和帮助?

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Save([DataSourceRequest] DataSourceRequest request, CustomerViewModel customerViewModel)
        {
            if (customerViewModel != null && ModelState.IsValid)
            {
                var customers = Repository.GetItems<Customer>();
                Repository.SaveChanges<Customer, CustomerViewModel, NorthWindDataContext>(customers, customerViewModel);
            }
            return Json(ModelState.ToDataSourceResult());
        }

Answer 1:

如果对象是嵌入在查询字符串,MVC总会看到它作为一个字符串。

你需要做的是这样的:

    public ActionResult Save(string customerViewString)
    {
        var jsonSerializer = new JavaScriptSerializer();
        var customerViewModel = jsonSerializer.Deserialize<CustomerViewModel>(customerViewString);
        if (customerViewModel != null && ModelState.IsValid)
        {
            var customers = Repository.GetItems<Customer>();
            Repository.SaveChanges<Customer, CustomerViewModel, NorthWindDataContext>(customers, customerViewModel);
        }
        return Json(ModelState.ToDataSourceResult());
    }

我一直在努力用类似的东西,我不能做一个Ajax获取或张贴在那里你可以在内容类型设置为JSON。 人们似乎没有这样做,在查询字符串(这有一定道理作为它只是一个字符串)的方式。

反序列控制器好像是唯一的选择。 喜欢的人谁可以显示这样做的更合适的方法来听。



文章来源: Binding query string to object in ASP.NET MVC?