MVC ASP.NET - 获取jtable来调用httpPost方法?

时间:2012-07-15 18:07:59

标签: asp.net-mvc asp.net-mvc-3 http-post jquery-jtable

我正在尝试使用MVC 3的jTables,但遇到了一个问题。当我的页面加载时,我没有得到任何调用我的[HttpPost]方法。我想因为这个原因,我不断收到“连接到数据库的错误”消息。

有人可以解释为什么我的[HttpPost]方法没有被调用吗?这是相关的代码:

    <div id="CompetitionTable""></div>

<script type="text/javascript">

    $(document).ready(function () {

        //Prepare jtable plugin
        $('#CompetitionTable').jtable({
            title: 'The Events List',
            paging: true, //Enable paging
            pageSize: 10, //Set page size (default: 10)
            sorting: true, //Enable sorting
            defaultSorting: 'Name ASC', //Set default sorting
            actions: {
                listAction: '@Url.Action("EventList", "CompetitionController")'
            },
            fields: {
                EventID: {
                    key: true,
                    create: false,
                    edit: false,
                    list: false
                },
                EventName: {
                    title: 'Name',
                    width: '15%'
                },
                CompetitorEmail: {
                    title: 'Email address',
                    list: false
                },
                CompetitorName: {
                    title: 'Competitor',
                    width: '15%',
                },
                Score: {
                    title: 'Score',
                    width: '10%',
                }
            }
        });

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

</script>


 [HttpPost]
        public JsonResult EventList(int compId)
        {
            try
            {
                //Get data from database
                List<Event> events = Event.getEventsByCompetitionId(compId);

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

2 个答案:

答案 0 :(得分:0)

你调用listAction的方式是错误的。你应该像这样'/ CompetitionController / EventList'

来调用它

答案 1 :(得分:0)

您的MVC操作会等待参数(compId)。但你的lisAction没有提供:

listAction:'@ Url.Action(“EventList”,“CompetitionController”)'

必须是这样的:

listAction:'@ Url.Action(“EventList”,“CompetitionController”)compId = 5'

可能这个表是为每场比赛动态填充的,并且在服务器端是已知的。所以,它必须是这样的:

listAction:'@ Url.Action(“EventList”,“CompetitionController”)compId=@ViewBag.compId'

当然,您必须在此视图的操作中设置compId。