Я хочу получить данные и показать в datatable в nopcommerce 3.80.Когда я делаю в это время, он показывает ошибку, то есть Обязательное поле формы защиты от подделки "__RequestVerificationToken" отсутствует. Я добавляю ключевое слово antiforgery также всякий раз, когда требуется поставить аналог контроллера ив виде представления все еще показывает ту же ошибку.
Вот мой вид формы,
<form id="Master-form" name="Master-form">
@Html.AntiForgeryToken()
<div class="content">
<div class="form-horizontal">
<div class="row">
</div>
<div id="product-edit" class="nav-tabs-custom">
<ul class="nav nav-tabs">
@Html.RenderBootstrapTabHeader("tab-country", @T("Admin.Master.Country"), true)
</ul>
<div class="tab-content">
@Html.RenderBootstrapTabContent("tab-country", @TabCountry(), true)
</div>
</div>
</div>
</div>
</form>
Вот мой частичный вид
<!-- /.row -->
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
@T("Admin.Master.CountryList")
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<table id="dataGrid" class="table table-striped table-bordered dt-responsive nowrap" width="100%" cellspacing="0">
<thead>
<tr>
<th>Id</th>
<th>Country Name</th>
<th>Active</th>
<th>Edit</th>
<th>Delete</th>
</tr>
</thead>
</table>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.col-lg-12 -->
</div>
<script>
$(document).ready(function () {
$('#dataGrid').DataTable({
"scrollX": true, // scrolling horizontal
"bSort": false,
"bFilter": false,
"processing": true, // for show progress bar
"serverSide": true, // for process server side
"pageLength": 5,
"lengthMenu": [5, 10, 50, 100, 1000, 10000],
"ajax": {
"url": 'AwazMaster/CountryList',
"type": "POST",
"datatype": "json",
"contentType": "application/json; charset=utf-8"
},
"columnDefs":
[{
"targets": [0],
"visible": false,
"searchable": true,
"orderable": false
}
],
"columns": [
{ "data": "Id", "name": "Id", "autoWidth": true },
{ "data": "CountryName", "name": "service", "autoWidth": true },
{ "data": "IsActive", "name": "active", "autoWidth": true },
{
"render": function (data, type, row) { return "<a class='btn btn-info' onclick=Edit('" + row.Id + "'); >Edit</a>"; }
},
{
"render": function (data, type, row) {
return "<a href='#' class='btn btn-danger' onclick=DeleteData('" + row.Id + "'); >Delete</a>";
}
},
]
});
});
</script>
Вот мой контроллер,
[HttpPost]
[ValidateAntiForgeryToken()]
public ActionResult CountryList()
{
// Getting all data
var dataList = _MasterService.CountryList(
start: Convert.ToInt32(Request.Form["start"]),
pageSize: Request.Form["length"].ToString() != null ? Convert.ToInt32(Request.Form["length"].ToString()) : 0,
sortColumnName: Request.Form["columns[" + Request.Form["order[0][column]"] + "][name]"],
sortColumnDirection: Request.Form["order[0][dir]"]);
var data = dataList.Select(x => new
{
Id = x.Id,
CountryName = x.CountryName,
IsActive = x.IsActive,
});
//Returning Json Data
Response.StatusCode = 200;
return Json(new { draw = Request.Form["draw"], recordsFiltered = dataList.TotalCount, recordsTotal = dataList.TotalCount, data = data });
}
Для большей ясности на приведенном выше изображении показана полная ошибка
, в то время как в консоли браузера отображается 500 (внутренняя ошибка сервера)