排序不工作,Json Result给出编码输出

本文关键字:编码 输出 Result Json 工作 排序 | 更新日期: 2023-09-27 18:27:16

我正在使用Json Result来显示一个表,当我显示结果时,它运行良好。现在我想给它添加一个排序功能,所以我使用了canSort:true属性。但现在,当我点击表的标题进行排序时,我在浏览器中得到了下面的编码字符串,它似乎也被排序了,但对它进行了某种编码,如下所示。

{"Data":"'u003ctable class='"paramCustomDataTable'"'u003e'u003cthead'u003e'u003ctr class='"customHead'"'u003e'u003cth scope='"col'"'u003e'u003ca href='"/Parameters/CustomData?id=7&sort=Name&sortdir=ASC'"'u003eName'u003c/a'u003e'u003c/th'u003e'u003cth scope='"col'"'u003e'u003ca href='"/Parameters/CustomData?id=7&sort=Value&sortdir=DESC'"'u003eDataValue'u003c/a'u003e'u003c/th'u003e'u003cth scope='"col'"'u003eDelete'u003c/th'u003e'u003c/tr'u003e'u003c/thead'u003e'u003ctbody'u003e'u003ctr'u003e'u003ctd'u003eNewdata'u003c/td'u003e'u003ctd'u003e123456'u003c/td'u003e'u003ctd'u003e'u003ca href='u0027delete/5'u0027'u003eDelete'u003c/a'u003e'u003c/td'u003e'u003c/tr'u003e'u003c/tbody'u003e'u003c/table'u003e"}

我知道下面的代码中可能有一些不一致之处,因为我不得不删除版权问题的实际列。


C# code
[CacheControl(HttpCacheability.NoCache), AcceptVerbs(HttpVerbs.Get)]
 public JsonResult GetMyData(int id)      {
            var result = _myRepository.GetmyDataWithId(id).ToList();
            var grid = new WebGrid(result, rowsPerPage: 5, canSort:true);
            var htmlString = grid.GetHtml(
                                          columns: grid.Columns(
                                              grid.Column("Name", "Name"),
                                              grid.Column("Value", "DataValue"),                                              
                                              ));
        return Json(new
        {
           Data = htmlString.ToHtmlString()
        }
        , JsonRequestBehavior.AllowGet);
    }

Javascript代码

 $.getJSON('@Url.Action("GetMyData")', { id: 1 }, function (result) {
                var customDataList = $('#grid');
                customDataList.empty();
                customDataList.append(result.Data);
            });

排序不工作,Json Result给出编码输出

在ASP MVC 4中,您可以执行下一步操作IQueryable支持

下一个很酷的功能是IQueryable支持。如果需要,您可以返回IQueryable,而不是从API操作返回"普通"IEnumerable对象。为什么?

还记得我们实现分页&使用ASP.NET MVC应用程序进行排序。这是有原因的,但需要大量的体力劳动。操作必须用额外的参数进行扩展,代码必须尊重这些参数并返回我们需要的确切数据部分。排序也是如此。在Web API中要简单得多。

将签名和返回类型更改为IQueryable。

public IQueryable<Product> Get()
{
    return _storage.AsQueryable();
}

现在,如果Web API看到这样的方法,它将允许使用开放数据协议(OData)查询字符串参数进行访问。OData支持以下查询:$filter、$orderby、$skip、$top。

现在,如果我请求:

**http://localhost:5589/api/products?$top=3**

我将收到,3个顶级产品。或者类似

**http://localhost:5589/api/products?$skip=2&$top=3**

我跳过第二节,休息第三节。简而言之,有了IQueryable和4个OData查询参数,做以前需要更多时间的事情就容易多了。

看看这个:

http://demos.telerik.com/aspnet-mvc/grid