我想通过mvc数据表中的href链接将视图的行ID传递给控制器。
这是我的数据表设计代码
<table id="dataGrid" class="table table-striped table-bordered dt-responsive nowrap" width="100%" cellspacing="0">
<thead>
<tr>
<th>N</th>
<th>Date</th>
<th>Action</th>
</tr>
</thead>
</table>
这是数据表操作代码
$(document).ready(function () {
$("#dataGrid").DataTable({
"processing": true, // for show progress bar
"serverSide": true, // for process server side
"pageLength": 5,
"lengthMenu": [5, 10, 50, 100, 1000, 10000],
"columnDefs":
[{
"targets": [0],
"visible": false,
"searchable": false,
"orderable": false
}
],
"columns": [
{ "data": "id", "name": "Id", "autoWidth": true, "orderable": false },
{ "data": "date", "name": "Date", "autoWidth": true, "orderable": false, "format": "dd/MM/yyyy" },
"render": function (data, type, row) {
return " <a href='/ServiceJob/GetPrintById?'" + row.id + "'' class='btn btn-success btn-lg glyphicon glyphicon-print'> Print </a> ";
}
},
]
});
});
这是控制器
[HttpPost]
public IActionResult GetPrintById(int id)
{
ServiceJobModel model = new ServiceJobModel();
// Service Job Detail
var serviceJob = _Db.ServiceJob.Where(x => x.Id == id).FirstOrDefault();
model.Id = serviceJob.Id;
model.Date = serviceJob.Date;
return View("Print");
}
现在我尝试通过以下代码返回的数据表操作代码
<a href='/ServiceJob/GetPrintById?'" + row.id + "'' class='btn btn-success btn-lg glyphicon glyphicon-print'> Print </a>
但是上面的代码不起作用。
如果我使用了 actionlink ,则代替了 href ,此时它显示了错误,即行在当前上下文中不存在。
这是动作链接代码,
@Html.ActionLink("Print", "GetPrintById", "ServiceJob", new { id = row.id }, null)
所以,对我来说,这两个代码都没有执行。
帮我解决这个问题。
谢谢。
答案 0 :(得分:1)
online_source = [{'_id': {'$oid': '5c989c112ae8570ca8c6bcd1'},
'name': 'Blogs',
'onlineId': '606881',
'type': 'source'},
{'_id': {'$oid': '5c989c122ae8570ca8c6bcd2'},
'name': 'Facebook',
'onlineId': '606911',
'type': 'source'},
{'_id': {'$oid': '5c989c122ae8570ca8c6bcd3'},
'name': 'Instagram',
'onlineId': '606937',
'type': 'source'},
{'_id': {'$oid': '5c989c122ae8570ca8c6bcd4'},
'name': 'Tumblr',
'onlineId': '606961',
'type': 'source'},
{'_id': {'$oid': '5c989c122ae8570ca8c6bcd5'},
'name': 'Twitter',
'onlineId': '606963',
'type': 'source'},
{'_id': {'$oid': '5c989c132ae8570ca8c6bcd6'},
'name': 'Others',
'onlineId': '606949',
'type': 'source'},
{'_id': {'$oid': '5c989c132ae8570ca8c6bcd7'},
'name': 'Forums',
'onlineId': '606925',
'type': 'source'},
{'_id': {'$oid': '5c989c132ae8570ca8c6bcd8'},
'name': 'Youtube',
'onlineId': '606965',
'type': 'source'}]
source_split_response = [
{
"key" : "News",
"doc_count" : 20
},
{
"key" : "606881",
"doc_count" : 12
},
{
"key" : "606925",
"doc_count" : 6
}
]
是一个客户端变量,您不能在运行服务器端的for ind_source_resp in range(0, len(source_split_response)):
for ind_source_map in range(0, len(online_source)):
if(source_split_response[ind_source_resp]['key'] == online_source[ind_source_map]['onlineId']):
source_split_response[ind_source_resp]['key'] = online_source[ind_source_map]['name']
print(source_split_response)
帮助器中使用它。您可以使用[{'key': 'News', 'doc_count': 20}, {'key': 'Blogs', 'doc_count': 12}, {'key': 'Forums', 'doc_count': 6}]
帮助程序添加行ID,并将包含完整URL的变量设置为[{'key': 'News', 'doc_count': 20}, {'key': 'Blogs', 'doc_count': 12}, {'key': 'Forums', 'doc_count': 6}]
设置内锚标签的row
属性:
@Html.ActionLink()
更新:
请注意,定位标记始终始终使用GET请求来调用@Url.Action()
属性中提到的控制器操作的路径,因此必须省略控制器操作上的href
属性/已删除:
render
参考:
Datatables with asp.net mvc rendering Url.actions/html.actionlinks with route values