如何通过MVC中的href链接将行ID从视图传递到控制器

时间:2019-03-26 06:13:34

标签: asp.net-mvc razor datatables href actionlink

我想通过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)

所以,对我来说,这两个代码都没有执行。

帮我解决这个问题。

谢谢。

1 个答案:

答案 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