从 ajax 加载时,锚标记助手呈现为纯文本

问题描述

在试图实现服务器端加载和 AJAX 调用的数据表中,一个属性作为文本从后端 api 返回,文本值是锚标记的 HTML 表示

OrderNo = $"<a asp-action=\"GetInfo\" asp-route-orderNo=\"{p.OrderNo}\" target=\"_blank\"> {p.OrderNo}</a>",

从控制台,我可以看到来自 api 的文本是正确的,如下所示

"data":[{"orderNo":"<a asp-action=\"GetInfo\" asp-route-orderNo=\"AV22728Z\" target=\"_blank\"> AV22728Z</a>","location":"Has","agent":"......................................

这仅在运行时在表列中呈现为纯文本,而不是替换为锚标记,即纯文本 AV22728Z 显示在列中

数据表初始化就像

$('#shipments').DataTable({                
            // Ajax Filter
            ajax: {
                url: "URL_API",type: "POST",contentType: "application/json",dataType: "json",data: function (d) {                        
                    return JSON.stringify(d);
                }
            },// Columns Setups
            columns: [
                { data: "orderNo" },......
            ]
        });

解决方法

链接似乎呈现为有效的 html,但链接不起作用,因为它没有作为 anchor tag helper 处理。您需要自己在控制器中生成 url

OrderNo = $"<a href=\"{Url.Action("GetInfo",new { orderNo = p.OrderNo})}\" target=\"_blank\"> {p.OrderNo}</a>"