使用jQuery从JTable MVC中的视图传递模型到控制器

时间:2013-06-19 17:19:32

标签: model-view-controller jquery-jtable

我正在尝试使用jTable将整个模型从View传递到Controller。 这是视图的代码

我有一个过滤条件,基于该条件将加载表格。 在选择时说出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,但是如果我导致正常的提交按钮事后处理,那么模型将被保留..我用Google搜索并获得了他们通过离散的示例元素而不是整个模型。 - 编辑 - 这是我提到的链接。 http://www.jtable.org/Demo/Filtering

请帮助。 感谢。

1 个答案:

答案 0 :(得分:2)

由于某些原因,当jTable发送它们时,MVC处理程序不能正确解码模型对象。我发现在jTable中设置contentType可以解决这个问题。在您的jTable定义中,添加以下内容:

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

然后,您必须在发送时将字符串化为字符串:

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