Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将json对象传递给视图并在slickgrid中显示_Javascript_Asp.net Mvc 4_Slickgrid - Fatal编程技术网

Javascript 将json对象传递给视图并在slickgrid中显示

Javascript 将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;

关于这个话题的其他帖子对我有所帮助,但并不完全。我正在从Wcf服务(包括在我的MVC 4项目中)检索数据,如下所示:

WarehouseController.cs

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