You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kendo UI的@Html.Raw链接中正确传递ID数据

问题原因

你遇到的问题是因为服务器端代码(@Helper.Link)和客户端Kendo模板语法冲突:#:data.Id#是Kendo UI客户端模板的变量,会在客户端渲染表格时解析成实际ID,但你把它传给了服务器端的Helper.Link方法,服务器端无法识别这个客户端语法,直接把字符串#:data.Id#作为参数值输出到HTML里,所以最终URL里的ID就是这个字面量,而不是实际的数值。

解决方法

有两种可行的修复方式,根据你的需求选择:

方式1:直接在客户端模板中构造链接(推荐)

跳过服务器端的Helper.Link,直接用Kendo模板语法写完整的链接,让客户端解析变量:

columns: [
    {
        field: "Name",
        title: "Name",
    },
    {
        title: "Action",
        width: 200,
        template: '<a href="/FamilyCause/Update/#:data.Id#" class="your-link-class"><i class="fa fa-pencil-alt"></i></a>'
    },
],

这样客户端渲染时,#:data.Id#会被替换成当前行的实际ID值,生成正确的URL。

方式2:修改Helper.Link,让它输出客户端模板语法

如果必须使用Helper.Link,需要让它输出包含#:data.Id#的字符串,而不是把#:data.Id#当作参数值传给服务器端方法。可以把整个URL作为模板字符串传入:

columns: [
    {
        field: "Name",
        title: "Name",
    },
    {
        title: "Action",
        width: 200,
        template: '@Html.Raw(Helper.Link("<i class='fa fa-pencil-alt'></i>", new Dictionary<string, string>{{"url", "/FamilyCause/Update/#:data.Id#" }}))'
    },
],

这里要注意:去掉原来的id参数,直接把#:data.Id#拼接到url的值里,服务器端会直接输出这个字符串到模板中,客户端渲染时再解析变量生成正确的URL。需要确保你的Helper.Link方法会将url参数的值直接作为链接的href属性值,而不会对其中的特殊字符进行转义。

内容的提问来源于stack exchange,提问作者Syahrul Romadoni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 09:37:23