Jtable“listaction”url总是使用旧参数值MVC4 Jquery调用动作控制器

时间:2016-10-18 07:24:59

标签: jquery asp.net-mvc-4 jquery-jtable

  [HttpPost]
    public JsonResult StudentList(int id= 0, int id2= 0)
    {
        try
        {
            //Get data from database

            List<Student> students = _repository.StudentRepository.GetStudents(id,id2);

            //Return result to jTable
            return Json(new { Result = "OK", Records = students},JsonRequestBehaviour.AllowGet);
        }
        catch (Exception ex)
        {
            return Json(new { Result = "ERROR", Message = ex.Message },JsonRequestBehaviour.AllowGet);
        }
    }

我的jquery

  $("#DDL_id").change(function(){ 
//fill dropdown2 "DDL_idd"  by ajax via get json call

});

 $("#DDL_idd").change(function(){ 

   var id= $("#DDL_id").val();
   var idd= $("#DDL_idd").val();

   var url = '/admin/StudentList?id1=' +id + '&id2='+idd;

 $('#General_InfoTableContainer').jtable({
        title: 'General_Info List',
       actions: {
            listAction: url

        },
        fields: {
            RID: {
                key: true,
                create: false,
                edit: false,
                list: true,
                title: 'RID',
                width: '5%'
            },
            Quote: {
                title: 'Open Quote',
                list: true,
                width: '15%',


            },
            Customer_Name: {
                list: true,
                title: 'Customer',
                width: '25%'
            }

        }
    });

    //Load student list from server
    $('#General_InfoTableContainer').jtable('load');
});
 });

我第一次获得控制器中两个下拉列表的正确ID但是之后如果我从下拉列表中更改我的选择,我的操作没有获得新值,并且它以旧值执行始终“StudentList(int id1 = 0, int id2 = 0)“id1和id2具有旧值,从不再次重置 我已经完成了

$.ajaxSetup({ cache: false });

 [Nocache] 

关于控制器操作和其他解决方案。请帮助。

1 个答案:

答案 0 :(得分:0)

你的问题是一个变量范围/闭包。

当jTable选项对象被创建并传递给jTable构造函数时,url中的任何值都被修复为listAction。

看起来您正在尝试执行“过滤”操作

只需将listAction设置为url的静态部分

即可
listAction: '/admin/StudentList',

然后填充表格

$('#General_InfoTableContainer').jtable('load',{
                                        'id1':$("#DDL_id").val(),
                                        'id2':$("#DDL_idd").val()});