控制器方法在数据表c# MVC中没有命中
本文关键字:MVC 方法 数据表 控制器 | 更新日期: 2023-09-27 17:53:25
我在应用程序中使用数据表,但是要获取数据控制器方法没有被触发。我能够在UI上渲染表,但数据是空的。
我的代码
SITE中导入的项。主
<link href="/Scripts/DataTables/media/css/demo_page.css" type="text/css" rel="stylesheet" />
<link href="/Scripts/DataTables/media/css/demo_table.css" type="text/css" rel="stylesheet" />
<script src="/Scripts/Lib/jquery-1.4.2.js" type="text/javascript" language="javascript"></script>
<script type="text/javascript" charset="utf-8" src="/Scripts/DataTables/media/js/jquery.dataTables.js"></script>
这是我的HTML外观
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>http://stackoverflow.com/questions/6946559/jqgrid-please-help</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" charset="utf-8">
$(document).ready(function () {
$('#example').dataTable({
bProcessing: true,
sAjaxSource: '@Url.Action("GridData", "Home")'
});
});
</script>
</head>
<div id="dynamic">
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
<thead>
<tr>
<th width="20%">Rendering engine</th>
<th width="25%">Browser</th>
<th width="25%">Platform(s)</th>
<th width="15%">Engine version</th>
<th width="15%">CSS grade</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</html>
下面是加载HTML的JS文件
var rptTabs = function () {
return {
Init: function () {
var placeholder = $("#rpt-tab");
placeholder.setTemplateURL("/Templates/Home/report.htm");
placeholder.load("/Templates/Home/report.htm");
}
}
} ();
这是我的Home controller方法的样子
public ActionResult GridData()
{
return Json(new
{
aaData = new[]
{
new [] { "Trident", "Internet Explorer 4.0", "Win 95+", "4", "X" },
new [] { "Gecko", "Firefox 1.5", "Win 98+ / OSX.2+", "1.8", "A" },
new [] { "Webkit", "iPod Touch / iPhone", "iPod", "420.1", "A" }
}
}, JsonRequestBehavior.AllowGet);
}
请告诉我我的实现有什么问题
问题与您在静态HTML模板中使用服务器端助手(Url.Action("GridData", "Home")
)这一事实有关,因为您错误地复制粘贴了my solution from here
,而没有使其适应您的场景。而且你使用的是WebForms视图引擎,而不是Razor。
所以我建议你把这个模板做成一个ASPX WebForm,通过一个控制器动作来提供服务,这样你就可以在里面使用服务器端助手了。
public class TemplatesController: Controller
{
public ActionResult Report()
{
return View();
}
}
然后你会有一个相应的视图:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>https://stackoverflow.com/questions/6946559/jqgrid-please-help</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" charset="utf-8">
$(document).ready(function () {
$('#example').dataTable({
bProcessing: true,
sAjaxSource: '<%= Url.Action("GridData", "Home") %>'
});
});
</script>
</head>
<div id="dynamic">
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
<thead>
<tr>
<th width="20%">Rendering engine</th>
<th width="25%">Browser</th>
<th width="25%">Platform(s)</th>
<th width="15%">Engine version</th>
<th width="15%">CSS grade</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</html>
,然后在加载模板时指定该控制器的正确路径(同样通过使用服务器端助手)。