-1

AJAX リクエストを手動で作成しようとしています。クライアント側では、次のようなものがあります。

function saveBatterySpecs(id) {
           var url = '@Url.Action("SaveBatterySpecs", "Catalog")';
            $.ajax({
                type: "post",
                url: url,
                data: {
                    art: $("#art" + id).val(),
                    brand: $("#brand" + id).val(),
                    name: $("#name" + id).val(),
                    country: $("#country" + id).val(),
                    volt: $("#volt" + id).val(),
                    cap: $("#cap" + id).val(),
                    sp: $("#sp" + id).val(),
                    powc: $("#powc" + id).val(),
                    term: $("#term" + id).val(),
                    mount: $("#mount" + id).val(),
                    adds: $("#adds" + id).val(),
                    length: $("#length" + id).val(),
                    width: $("#width" + id).val(),
                    height: $("#height" + id).val(),
                    guar: $("#guar" + id).val()
                },
                dataType: 'text', //or json, no difference
                success: hideEditForm(id)
            });

そしてサーバー上で単純な

 public ActionResult SaveBatterySpecs(string batteryData)
            {
            if (Request.IsAjaxRequest())
                {
                Debug.WriteLine(batteryData);
                return PartialView("~/Views/Shared/EmptyView.cshtml");
                }
            else
                return null;
            }

コントローラーのブレークポイントが機能し、すべて OK です。ブラウザー デバッガーは、データを含む通常の要求を示します。しかし、私はそれを処理できません - batteryData は常に null です。私が間違っていることは何ですか?フォームを避けて現在使用できないため、フォームを使用したソリューションは役に立ちません。タイプをテキストから json に切り替えることはできますが、これは役に立ちません。

4

2 に答える 2

1

データを表す文字列の代わりに実際のオブジェクトを投稿する maxs87 が何をもたらすかをお勧めします。

ただし、本当に文字列のみを受け入れたい場合は、一致する変数名が必要です。

これにより、 という 1 つのパラメーターがポストされますbatteryData。その値は、すべてのデータを表す JSON 文字列です。コントローラーでは、batteryData手動で逆シリアル化できる JSON 文字列が変数に入力されます。

data: {
    batteryData: JSON.stringify({
        art: $("#art" + id).val(),
        brand: $("#brand" + id).val(),
        name: $("#name" + id).val(),
    })
},
于 2013-06-17T15:11:49.060 に答える