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中文网其他相关文章!