2013-06-19 126 views
0

我想通过使用jTable将View的整个模型传递给控制器​​。 这里是视图的代码从JTable MVC中使用jQuery将模型传递给控制器​​

我有一个过滤器条件的基础上,表将被加载。 说出ModelId和ModelName的DropdownList,选择后点击一个按钮,执行下面的函数。

<script type="text/javascript"> 
    function GetModels() { 

     var model = { 
     ModelId:$("#ModelId").val(), 
     ModelName:$("#ModelName").val(), 
     ModelAge:$("#ModelAge").val() 
    }; 


    $(document).ready(function() { 
     $('#PersonTableContainer').jtable({ 
      title: 'Table of Models', 
      actions: { 
       listAction: '/Controller/ActionName' 

      }, 

      fields: { 
       ModelName: { 
        title: 'ModelName', 
        width: '30%', 
        list: false 
       }, 

       ModelId: { 
        title: 'ModelId', 
        width: '30%', 
        key: true, 
        create: false, 
        edit: false 
       } 

       ModelAge: { 
        title: 'ModelAge', 
        width: '30%', 
        create: false, 
        edit: false 
       } 
      } 
     }); 
     $('#PersonTableContainer').jtable('load', { ModelName: model }); 


    }); 
    } 

这里是控制器的代码。

public JsonResult GetAppropriateModel(ModelName ModelName) 
    { 
     try 
     { 
      FillAppropriateModel(ModelName); 
     } 

     catch(Exception e) 
     { 
      return Json(new { Result = "Error", Message=e.Message }); 
     } 

    } 

我种在AJAX的新的,我现在面临一个问题,即在返回的模式为null,但是如果我会对正常的提交按钮postaction,那么该模型被保留。我用Google搜索,并得到范例他们通过离散元素而不是整个模型。编辑 - 这是我提到的链接。 http://www.jtable.org/Demo/Filtering

请帮忙。 谢谢。

回答

2

出于某种原因,MVC处理程序在jTable发送时不会正确解码模型对象。我发现在jTable ajaxSettings中设置contentType可以修复此问题。在你的JTable定义,补充一点:

ajaxSettings: { 
    contentType: "application/json; charset=utf-8" 
} 

然后,你必须字符串化的参数,当你把它:

$('#PersonTableContainer').jtable('load', JSON.stringify({ ModelName: model })); 
相关问题