ASP.NET MVC および jqGrid ドロップダウン リストのデータ形式: $.post 呼び出しの問題の解決
ASP.NET MVC では、jqGrid の編集データ ドロップダウン リストに動的にデータを入力できます。ただし、ドロップダウン リストに「未定義」の値が表示されるという問題が発生する場合があります。これは、jqGrid のデータ形式が原因である可能性があります。
問題の概要
jQuery を使用して $.post 呼び出しを行う場合、コントローラーから受信したデータに二重引用符が含まれる場合があります。これにより、jqGrid ではドロップダウンの値が "value:value;..." の形式であることが期待されるため、問題が発生します。
解決策: ContentResult を使用します
この問題を解決するには、Json の代わりに ContentResult メソッドを使用します。 ContentResult の構文は次のとおりです:
<code class="language-csharp">return Content(sb.ToString());</code>
代替: dataUrl と buildSelect を使用します
別のオプションは、jqGrid の editoptions または searchoptions で dataUrl 属性と buildSelect 属性を使用することです。 dataUrl を使用して、jqGrid の select 要素で必要な形式でデータを返す URL を指定します。 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 中国語 Web サイトの他の関連記事を参照してください。