Javascript 将json对象传递给视图并在slickgrid中显示
关于这个话题的其他帖子对我有所帮助,但并不完全。我正在从Wcf服务(包括在我的MVC 4项目中)检索数据,如下所示: WarehouseController.csJavascript 将json对象传递给视图并在slickgrid中显示,javascript,asp.net-mvc-4,slickgrid,Javascript,Asp.net Mvc 4,Slickgrid,关于这个话题的其他帖子对我有所帮助,但并不完全。我正在从Wcf服务(包括在我的MVC 4项目中)检索数据,如下所示: WarehouseController.cs WarehouseInput objWI = new WarehouseInput(); public ActionResult Index(WarehouseInput value) { objWI.count = 15; objWI.offset = 0;
WarehouseInput objWI = new WarehouseInput();
public ActionResult Index(WarehouseInput value)
{
objWI.count = 15;
objWI.offset = 0;
objWI.query = "";
objWI.sort = "ID";
objWI.order = "asc";
objWI.ID = 0;
objWI.RowID = 0;
Service1 c = new Service1();
c.GetWarehouseList(objWI);
//var model = c.GetServices();
update 1 -----> return View(objWI);
//return GetWarehouseList(objWI);
update 2 -----> //return Json(objWI, JsonRequestBehavior.AllowGet);
}
我正在获取Json对象中的数据
Index.cshtml
编辑:
@model mvcapapplication1.WS.DataContracts.WarehouseInput
@{
ViewBag.Title=“Index”;
}
指数
警报('0');
$.ajax({
url:“@url.Action(“Index”)”,
键入:“GET”,
cache:false,
成功:功能(resp){
警报(resp);
if(resp.WarehouseResults!=null){
var objTemp=相应的仓库结果;
//var from=相应的偏移量,to=from+resp.WarehouseResults.length;
//data.length=parseInt(分别为总计);
//对于(变量i=0;i
问题是,控件永远不会转到cshtml。如何将json对象传递给视图(UI)?如何在我正在使用的slickgrid中显示它?
编辑:javascript代码需要修改,但首先我必须获得控件才能到达那里。您需要返回一个视图,而不是JSON。您有一行注释掉了,它符合您的要求:
return View(objWI.WarehouseResults);
您的cshtml文件中还有一行将其转换为JSON,您也注释掉了:
var values = @Html.Raw(Json.Encode(Model.WarehouseResults));
我不明白的是,为什么要在action方法和JavaScript中调用GetWarehouseList
从JavaScript调用服务对于在不必加载页面的情况下重新加载数据非常有用。但你真的想这么做吗?您只在JQuery.ready上调用它,它在页面加载时只调用一次。但是,当您加载页面时,您已经可以使用ViewModel将JSON嵌入HTML中
stylojack_10:
“虽然这可能不是答案,但我最终在讨论中得到了答案,因此我将其标记为答案。”您可以从javascript发出Ajax调用,并将收到的结果绑定到slick grid 您的Ajax调用如下所示:
$.getJSON("ActionName", success = function (data) {
//Your Code to bind slick grid data
});
你们的行动如下:
public ContentResult ActionName()
{
var jsonString = JsonConvert.SerializeObject(YourObject, serializerSettings);
return Content(jsonString);
}
正如我所说,javascript代码需要修改。无论如何,现在我已经取消了这两行的注释&我得到了调用的警报('0')(请参见编辑2)。我该怎么做呢?MVC
Json
方法返回一个“JsonResult”,它是一个“ActionResult”,所以这不是问题。视图中有数据。你想用它做什么?您的数据位于JavaScript中名为“values”的变量中。你说你想用光滑的网格。我不知道如何使用它,它的github页面现在对我来说不起作用,但这是剩下的唯一一块拼图。除了创建“values”变量的那一行之外,您可以删除大部分JavaScript,然后编写一个JQuery.ready函数填充网格。摆脱AJAX调用。当你说“控件永远不会转到cshtml”时,这是否意味着传递给$的success
函数没有被调用?如果是这种情况,那么a)您有一个服务器端错误,或者b)您可以尝试将javascript放入
元素中。是的,这就是我的意思…使用浏览器中的F12开发人员工具,并观察网络流量,查看从web服务器返回的结果(如果有)。此外,请验证您使用的url是否有效(通过将其粘贴到web浏览器中)。我正在从服务器获得所需的结果。我无法将它绑定到网格并显示它。您的ViewModel位于名为Model的类中。您可以编写代码,例如“@foreach(Model.warehousesults中的var warehouse){@warehouse.Name }”,以生成视图模型中每个仓库名称的标记。
public ContentResult ActionName()
{
var jsonString = JsonConvert.SerializeObject(YourObject, serializerSettings);
return Content(jsonString);
}