ホームページ > バックエンド開発 > C++ > jqGrid への ASP.NET MVC $.post 呼び出しがドロップダウンに未定義の値を返すのはなぜですか?

jqGrid への ASP.NET MVC $.post 呼び出しがドロップダウンに未定義の値を返すのはなぜですか?

Patricia Arquette
リリース: 2025-01-11 08:49:43
オリジナル
993 人が閲覧しました

Why is my ASP.NET MVC $.post Call to jqGrid Returning an Undefined Value in the Dropdown?

ASP.NET MVC および jqGrid ドロップダウン生成の問題のトラブルシューティング

問題: ASP.NET MVC 2 $.ajax() 呼び出しを使用して動的に値を設定すると、jqGrid ドロップダウンに予期しない「未定義」値が表示されます。これは、グリッドに返されたデータが不適切にフォーマットされていることが原因です。 jqGrid は、"FE:FedEx; IN:InTime; TN:TNT" のようなドロップダウン値の特定の形式を想定しています。 データの書式設定に StringBuilder を使用すると、余分な引用符と末尾のセミコロンが発生します。

分析: 最初のアプローチでは、データを返すために ContentResult(sb.ToString()) を使用しました。機能しますが、効率が低く、フォーマット エラーが発生しやすくなります。

解決策: dataUrl または buildSelect 内で jqGrid の editoptions プロパティと searchoptions プロパティを活用すると、よりクリーンで堅牢なソリューションが提供されます。 これにより、手動による文字列の書式設定が不要になります。 dataUrl はデータ ソースを指定し、buildSelect は書式設定を処理します。

dataUrlbuildSelect を使用した例:

<code class="language-javascript">{ 
    name: 'destinations', 
    editable: true, 
    edittype: 'select',
    editoptions: { 
        dataUrl: '<%= Url.Action("GetDestinationList", "Home") %>',
        buildSelect: function(response) {
            var s = '';
            if (response && response.length) {
                for (var i = 0; i < response.length; i++) {
                    s += response[i] + ';'; //Note the semicolon placement
                }
            }
            return s; // Removed trailing ""
        }
    }
}</code>
ログイン後にコピー

HTTP メソッドの考慮事項:

dataUrl に対して GET よりも POST リクエストが優先される場合は、サーバー側で Json(allDestinations, JsonRequestBehavior.AllowGet)Json(allDestinations) に置き換え、ajaxSelectOptions: { type: "POST" } を jqGrid オプションに追加します。

最適化された buildSelect 関数:

提供されている buildSelect 関数は、明確さと効率性を高めるためにわずかに最適化できます (ただし、機能的には元の関数と同様です)。

<code class="language-javascript">buildSelect: function(response) {
    return (response && response.length) ? response.join(';') : '';
}</code>
ログイン後にコピー

この改訂されたアプローチにより、jqGrid ドロップダウンを設定するための、より保守しやすく、エラーが発生しにくい方法が提供されます。

以上がjqGrid への ASP.NET MVC $.post 呼び出しがドロップダウンに未定義の値を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート