1

我正在尝试使用 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 });
            }
        }
4

2 回答 2

0

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

列表动作:'@Url.Action("EventList", "CompetitionController")'

它必须是这样的:

列表动作:'@Url.Action("EventList", "CompetitionController")compId=5'

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

列表动作:'@Url.Action("EventList", "CompetitionController")compId=@ViewBag.compId'

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

于 2013-01-29T14:45:03.557 回答
0

您调用 listAction 的方式是错误的。你应该这样称呼它'/CompetitionController/EventList'

于 2012-08-16T04:57:57.217 回答