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中文網其他相關文章!