0

我正在尝试使用 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 的新手,我面临一个问题,即返回的模型为空,但是如果我导致正常的提交按钮后操作,那么模型将被保留。我用谷歌搜索并获得了它们传递离散元素而不是传递的示例整个模型。--编辑 -- 这是我提到的链接。 http://www.jtable.org/Demo/Filtering

请帮忙。谢谢。

4

1 回答 1

2

由于某种原因,当 jTable 发送模型对象时,MVC 处理程序无法正确解码模型对象。我发现在 jTable ajaxSettings 中设置 contentType 可以解决此问题。在您的 jTable 定义中,添加以下内容:

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

然后,您必须在发送参数时对其进行字符串化:

$('#PersonTableContainer').jtable('load', JSON.stringify({ ModelName: model }));
于 2013-10-18T17:08:10.387 回答