首页 >后端开发 >C++ >如何正确格式化来自 ASP.NET MVC $.post 调用的 jqGrid 下拉响应?

如何正确格式化来自 ASP.NET MVC $.post 调用的 jqGrid 下拉响应?

Susan Sarandon
Susan Sarandon原创
2025-01-11 09:07:41952浏览

How to Properly Format jqGrid Dropdown Responses from ASP.NET MVC $.post Calls?

ASP.NET MVC与jqGrid下拉列表数据格式化:解决$.post调用问题

在ASP.NET MVC中,您可以动态填充jqGrid的编辑数据下拉列表。然而,您可能会遇到下拉列表中出现“undefined”值的问题。这可能是由于jqGrid的数据格式化导致的。

问题概述

使用jQuery进行$.post调用时,从控制器接收到的数据可能包含双引号。这会导致jqGrid出现问题,因为它期望下拉列表的值采用“value:value;...”的格式。

解决方案:使用ContentResult

为了解决这个问题,请使用ContentResult方法代替Json。ContentResult的语法如下:

<code class="language-csharp">return Content(sb.ToString());</code>

替代方案:使用dataUrl和buildSelect

另一个选择是在jqGrid的editoptions或searchoptions中使用dataUrl和buildSelect属性。使用dataUrl,您可以提供一个URL,该URL返回jqGrid的select元素所需格式的数据。buildSelect是一个自定义函数,它接收数据并返回select元素的HTML。

代码示例

以下是如何使用dataUrl和buildSelect的示例:

控制器操作:

<code class="language-csharp">public JsonResult GetDestinationList() {
    List<string> allDestinations = GetAllDestinations();
    return Json(allDestinations, JsonRequestBehavior.AllowGet);
}</code>

jqGrid选项:

<code class="language-javascript">{ name: 'destinations', editable: true, edittype:'select',
  editoptions: { dataUrl: '/YourController/GetDestinationList', buildSelect: function(data){
    var s = '<select>';
    if (data && data.length) {
        for (var i = 0, l=data.length; i<l ; i++) {
            var ri = data[i];
            s += '<option value="' + ri + '">' + ri + '</option>';
        }
    }
    s += '</select>';
    return s;
  }}
}</code>

总结

通过使用ContentResult方法或dataUrl和buildSelect属性,您可以为来自ASP.NET MVC中$.post调用的jqGrid下拉列表值提供正确的数据格式。

以上是如何正确格式化来自 ASP.NET MVC $.post 调用的 jqGrid 下拉响应?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn