在 Razor 的 Javascript 中嵌入 Html.ActionLink

Posted

技术标签:

【中文标题】在 Razor 的 Javascript 中嵌入 Html.ActionLink【英文标题】:Embed Html.ActionLink in Javascript in Razor 【发布时间】:2011-08-15 08:48:57 【问题描述】:

我知道可以在 MVC3 的 javascript 中嵌入 @html,但我无法让以下工作正常工作,也不确定这是否可行。

使用 jQuery DataTable,我有一个 AJAX 调用来创建我的新行,然后我使用数据表 API 以编程方式添加它。这一切都有效,但是我想将我的 Edit ActionLink 放到行上,它只显示文本“编辑”,而不是链接。

当然我可以手动执行此操作,只是想知道是否有更好的选择。

例如

 tablePallets.fnAddData([ GetPalletActionLinks(), etc...


    function GetPalletActionLinks() 
        var result = @Html.ActionLink("Edit", "EditPallet", new  id = 1 );
        return result;

目前我已经硬编码了 ID = 1,但我可以很容易地为新创建的行获取它。

谢谢 邓肯

【问题讨论】:

【参考方案1】:

我认为这很简单,只需在链接周围添加引号:

var result = '@Html.ActionLink("Edit", "EditPallet", new  id = 1 )';

这将生成整个<a> 标签。你也可以做的只是返回网址:

var result  = '@Url.Action("EditPallet", new  id = 1 )';

并使用 jQuery 将其嵌入到现有锚点中:

<!-- let's imagine this already exists -->
<a href="#" id="dynamicLink">Edit</a>

// result is ovbiously what the other function returns
$("#dynamicLink").attr("href", result);

【讨论】:

你是对的......我认为如果我在它周围加上引号会被解释为字符串文字......对于 MVC3 仍然是新的,它可以做什么仍然让我感到惊讶.看不到我在做另一个 WebForms 应用程序! @Duncan - 我知道你的意思,这里也一样 =)

以上是关于在 Razor 的 Javascript 中嵌入 Html.ActionLink的主要内容,如果未能解决你的问题,请参考以下文章

如何在 .js 文件中嵌入 Razor C# 代码?

Blazor_WASM之2:Razor语法

使用 MVC 渲染具有嵌入式 Razor 变量的动态 HTML

Asp.net MVC Razor输出字符串方法(js中嵌入razor)

Razor - C#变量

Razor - C#变量