C#MVC在“返回Json”之前触发成功

时间:2017-01-01 03:27:54

标签: c# json ajax asp.net-mvc

我有一个带有脚本(包括在下面)的视图,该脚本在下拉列表更改时触发,并且事件处理程序应填充两个文本输入的值。从控制器接收值。

我遇到的问题是,只要填充itemstatus列表,控制器就会返回查看状态,并且没有值传回给AJAX函数。

如果我删除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);

控制器:

// Add Fragments to Tabs in Main Activity
private void setupViewPager(ViewPager viewPager) {
    Adapter adapter = new Adapter(getSupportFragmentManager());
    adapter.addFragment(new FeedsFragment(), "Latest Updates");
    adapter.addFragment(new ClubTeamsFragment(), "Club Teams");
    adapter.addFragment(new FixturesFragment(), "Fixtures");
    adapter.addFragment(new ResultsFragment(), "Results");
    adapter.addFragment(new ClubFieldsFragment(), "Club Fields");
    viewPager.setAdapter(adapter);
}

}

1 个答案:

答案 0 :(得分:0)

因为您要发送一个列表,可以使用

访问其数据值
success: function(data) 
        {
            $("#txtQuantity").val(data[0].Quantity);
            $("#txtPrice").val(data[0].Price);
        }