0

MVC3にモーダルダイアログがあり、次のようにパラメーターをコントローラーに渡します。

$("#SelectedCSIDivisionCodes").live("click", function () {
        var ID = $(this).val();

        $.ajax({
            type: "GET",
            url: '@Url.Action("GetCSICodes", "CSICodes")',
            data: { divisionID: ID },
            dataType: "json",
            error: function (xhr, status, error) {
                alert(xhr);
                alert(status);
                alert(error);
                // you may need to handle me if the json is invalid
                // this is the ajax object
            },
            success: function (json) {
                alert("Data Returned: " + json);
            }
        });

        //            $.getJSON(, { divisionID: ID }, function (data) {
        //                alert(data);
        //            });

    });

そして、私はこのようなパラメータを受け取っています:

   [AcceptVerbs(HttpVerbs.Get)]
    public JsonResult GetCSICodes(string divisionID)
    {
        int ID = Convert.ToInt32(divisionID);
        var csiCodes = (from c in EFProject.CSICode
                        where c.DivisionID == ID
                        select c).OrderBy(x => x.CSICodeID);

        List<SelectListItem> codes = new List<SelectListItem>();

        foreach (var code in csiCodes)
        {
            codes.Add(new SelectListItem { Value = code.CSICodeID.ToString(), Text = code.Code + " " + code.Name });

        }

        return Json(codes.AsEnumerable(), JsonRequestBehavior.AllowGet);
    }

ajax呼び出しは正常に機能しますが、コントローラーのパラメーター値を検出しません。つまり、コントローラーの変数divisionIDでのみnullを取得しています。Firefoxを使用して、値を設定しているかどうかを確認しましたが、次のURLが返されるため、Firefoxが設定しているようです。GEThttp:// localhost:1925 / CSICodes / GetCSICodes?divisionID%5B%5D = 2 [HTTP / 1.1 200 OK 95690ms]

何が間違っている可能性があるかについてのアイデアはありますか?

4

1 に答える 1

0

アクションは文字列型のパラメーターを期待していますが、配列型のパラメーターを取得しています。

URLはdivisionID=2で終了する必要があり、代わりにdivisionID [] = 2(1の値が2の配列)で終了します。

特定の状況では、val()関数が配列を返す可能性があります。詳細については、 http://api.jquery.com/val/を参照してください。

于 2012-04-23T04:11:26.807 に答える