2012-04-23 10 views
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を返すので、それはそれをやっているようだ: GET http://localhost:1925/CSICodes/GetCSICodes?divisionID%5B%5D=2 [HTTP/1.1 200 OK 95690ms]間違っている可能性が何の

任意のアイデア?

+0

URLはdivisionID = 2ではなくdivisionID [] = 2で終わる必要があります。あなたはあなたのjavascriptでそれをデバッグするとき、IDは何を同等ですか? – DMulligan

+0

コントロールはListBoxForヘルパーです。私が警告($(this).val())をすると、例えば2のような数字が得られます。私は本当にFirefoxでそれをデバッグする方法を知らない。 –

+0

私は、IDが設定された後(あなたのajax呼び出し)に行にブレークポイントを置き、次にどのIDが設定されているか調べます。あなたが記述したURLは、IDが2つに設定された1つの値を持つ配列であると考えた場合に起こります。 – DMulligan

答えて

0

あなたのアクションでは、文字列型のパラメータが必要ですが、配列型のパラメータを取得しています。

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

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