2017-01-01 9 views
0

私は、ドロップダウンリストの変更で発生するスクリプト(以下に含まれています)を持つビューを持っていて、イベントハンドラは2つのテキスト入力の値を埋めます。値はコントローラから受信されます。"return Json"の前にMVCが成功しました

問題は、itemstatusリストに値が設定されるとすぐに、コントローラが戻って表示され、値はAJAX関数に返されません。

私はitemstatusリストコードを削除し、手動で次のように値を割り当て、それが動作する場合:

var result = new { Quantity = "123", Price = "555"}; 

それが動作します。

私はコントローラ内でデータを取得する他の方法も試しましたが、結果は同じでした。あなたは私が間違っているの何任意のアイデアを持っていますし、コントローラは

<script type="text/javascript"> 

$(document).ready(function() { 
    //Dropdownlist Selectedchange event 
    $("#dropdown1").change(function() 
    { 
     $("#txtQuantity").empty(); 
     $("#txtPrice").empty(); 
     $.ajax(
     { 
      type: 'POST', 
      url: '@Url.Action("GetValues")', 
      dataType: 'json', 
      data: { id: $("#dropdown1").val() }, 
      success: function(data) 
      { 
       $("#txtQuantity").val(data.Quantity); 
       $("#txtPrice").val(data.Price); 
      } 
     }) 
    }) 
}); 

コントローラー "JSONを返す" の前に表示する戻るなぜ:あなたがあるため

public JsonResult GetValues(int id) 
    { 

     List<Item> itemstatus = 
      (from pd in db.Item 

      where (pd.itemID == id) 
      select new Item() 
      { 
       itemPrice = pd.itemPrice, 
       itemQuantity = pd.itemQuantity 
      }).ToList(); 

     ... 
     more code where i select what i need as a result i have two strings named itemquantity and itemprice 
     ... 

     var result = new { Quantity= itemquantity, Price = itemprice }; 
     return Json(result, JsonRequestBehavior.AllowGet); 

}

+0

申し訳ありませんこれは何を意味するのでしょうか ? ** itemstatusリストがポピュレートされると、コントローラはビ​​ューに戻り、値は何もajax関数に返されません**? – Shyju

+0

申し訳ありませんが、十分に明確ではありませんでした。 したがって、できるだけ早くこの行などが実行される: リスト itemstatus = ()(pd.itemID == ID db.ItemにおけるPDからは、新しいアイテム(){ itemPrice = pd.itemPriceを選択 、 itemQuantity = pd.itemQuantity })。ToList(); コントローラが表示に戻ります。 – user3809390

+0

これは私が理解していない部分です**コントローラは表示**に戻りますか?どうしてわかるの ?このメソッドは、現在のビューからのajax呼び出しによって実行されます。そのコードが実行されている間は、ブラウザで現在のビューが表示されます。だから、あなたがコントローラーに何を意味するのが見えるか?どちらのビュー?すでにビューが表示されています。 – Shyju

答えて

0

success: function(data) 
     { 
      $("#txtQuantity").val(data[0].Quantity); 
      $("#txtPrice").val(data[0].Price); 
     } 
を使用してデータ値にアクセスできるリストを送信する
関連する問題