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