私はデータテーブルにかなり慣れていないので、AJAX サーバー処理を使用してデータをテーブルにロードする必要があります。
GET リクエストを使用してみましたが、404 not found エラーが発生し、URL が不完全でした (URL にアクション名がありませんでした)。
GET リクエストの代わりに POST を使用することを推奨する同様の問題についての投稿を読みました。GET を使用すると、「null のプロパティ sError を読み取れません」というメッセージが表示され、何が起こるかわかりません。
コントローラーに到達することさえできないため、コントローラーでデバッグすることはできません。
以下は、datatables オブジェクトの初期化コードです。
oTable = $('#solutionsTable').dataTable({
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"bSort": false,
"oLanguage": {
"sSearch": "Search all columns:"
},
"bProcessing": true,
// "bDeferRender": true,
"bServerSide": true,
"bAjaxSource": "AJAXGetUserData",
"sServerMethod": "POST"
});
これがコントローラーのアクションです(ただし、そこには到達しません)
[HttpPost]
public ActionResult AJAXGetUserData(jQueryDataTableParamModel param)
{
var allUsers = CMSHelper.GetUsers(countries: User.IsInRole("Account Admin") ? CMSHelper.GetAdminCountries(User.Identity.Name).Select(c => c.Key).ToList() : null);
var result = from u in allUsers
select new string[] {Convert.ToString(u.userId), u.userName, u.roleId.ToString(), u.type, u.isActive.ToString(), u.firstName, u.lastName,
u.email, u.phone, u.Postcode, u.Street, u.Street, u.company, u.jobId.ToString(), u.job, u.country, u.countryName, u.City, u.LoginsNum.ToString(),
u.LastLogin.ToShortDateString()};
return Json(new
{
sEcho = param.sEcho,
iTotalRecords = 97,
iTotalDisplayRecords = 3,
aaData = result
}, JsonRequestBehavior.AllowGet);
}