当前位置: 首页 > 面试题库 >

排序不适用于Json Result,无法提供编码输出

唐涛
2023-03-14
问题内容

我正在使用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);
            });

问题答案:

在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**

我将跳过2并休息3。简而言之,有了IQueryable和4个OData查询参数,可以轻松完成需要更多时间的工作。



 类似资料:
  • 我正在尝试实现ESAPI编码以防止在我的spring-mvc项目中进行XSS攻击。我的方法是在发送回响应中的输入之前,我将使用 ESAPI.encoder() 对其进行编码,以便在页面响应中对输入属性进行编码。 我的假设是,当我返回编码的响应时,在我的页面响应中,我将得到编码的字符,而在我的输入字段中,我会得到普通的字符,但我的输入域也设置了编码的字符。 下面是我在发送响应之前在控制器中编写的示例

  • 我目前正在使用带有Spring Data commons 1.9.1和Spring JPA 1.7.1的JpaSort。我需要使用QueryDSL,因为JPA不允许为空值定义排序。 这是我的存储库 我在我的控制器中这样做: 这就是我对JPA的看法: 这是我为QueryDSL更改的内容: 然而,似乎什么都没有得到整理。我已经启用了调试日志记录,我看到了这一点: 如果我将其更改为: 然后,按我的“数据

  • 我设法让在视窗下与火狐ESR 52.0配合使用,但我无法让它在苹果电脑中加载。我已经尝试了几种不同的配置,并通过直接加载它,但都不起作用,有人能给我一些指针吗? pkcs11。cfg配置如下: 然后在Java中,我尝试这样加载它: 然而,这立即给了我以下错误: 你可能会问我为什么要从奇怪的文件夹中加载,那是因为我在MacOS中使用了将更改为,以便让库依赖项工作(因为我试图在Eclipse中运行它,

  • Elasticsearch排序不适用于嵌套字段。它显示了升序和降序的混合值。比如40,30,50。它不是按升序显示的:30,40,50 查询:

  • 问题内容: 我正在为我的JTable列使用以下代码进行编辑/取消编辑,但是当用户重新排列列时,以下代码不起作用,代码的SSCCE如下: 问题答案: 请注意,模型索引和视图索引 不 相等。如前所述这里, 提供了从模型坐标转换为视图坐标- 和-的方法,以及从视图坐标转换为模型坐标- 和的方法。 本教程部分讨论了 对 行进行 排序和过滤 ,但是原理也适用于列。没有完整的示例,很难确定。

  • 我正在尝试实现一个类似问题的系统。这些问题应该根据数据属性“投票”重新排序。因此,每次从套接字接收到like事件时,都会调用sort函数。当一个问题第一次被喜欢时,所有的事情都很好,列表也被排序了。但它会停止排序。我已经检查了数据值。 下面是我的js功能: