将 Razor 语法变量传递给 Html Helper 的 javascript onclick

Posted

技术标签:

【中文标题】将 Razor 语法变量传递给 Html Helper 的 javascript onclick【英文标题】:Passing Razor syntax variable into javascript onclick of an Html Helper 【发布时间】:2017-11-23 01:01:40 【问题描述】:

尝试渲染页面,并在按钮单击时触发通知。我已经将它设置为现在只是弹出一个窗口,因为它是高层的内部应用程序。

有问题的按钮是一个简单的 razor 语法 html 助手,带有一个 onclick 事件以返回一个确认对话框。但是,似乎我无法为此呈现 item 变量。

@Html.ActionLink("Delete", "Delete", new  id = item.Id ,
 new  @class = "btn btn-warning", 
 onclick = "return confirm('WARNING: Delete @item.Id?');" )

这无法呈现 item.Id(周围 foreach 语句的输出,而是输出字符串文字“@item.Id”

@Html.ActionLink("Delete", "Delete", new  id = item.Id , 
 new  @class = "btn btn-warning", 
 onclick = "return confirm('WARNING: Delete ' + item.Id + '?');" )

这会呈现变量,但由于它不是 javascript 变量,因此呈现为“删除未定义?”

如何在传递到此对话框的 javascript 之外使用来自 foreach 的变量,以使消息更具描述性。

【问题讨论】:

在 onclick 事件中进行字符串连接 Bhuban 感谢我试图获得的洞察力,但是我一生都无法记住/找到语法,你能用一个例子来详细说明 【参考方案1】:

我能够在C# 中使用string.Format 解决我自己的问题。

@Html.ActionLink("Delete", "Delete", new  id = item.Id , 
 new  @class = "btn btn-warning", 
 onclick = string.Format("return confirm('WARNING: Delete 0?');", item.Id) )

【讨论】:

你必须这样做的原因是你已经通过@开始一行切换到“代码”模式。 razor 编译器甚至从未见过@item。 戴夫:非常有道理,感谢您提供的详细信息,希望这可以节省我在愚蠢错误上花费的时间 @Dave 或者在我对他们第二个示例的回答中,他们包含一个 javascript 变量而不是他们的 foreach 变量,因为字符串没有正确连接。两种切蛋糕的方法。【参考方案2】:

你没有正确关闭你的字符串。请尝试以下操作:

onclick = "return confirm('WARNING: Delete " + item.Id + "?');"

您的错误是说 javascript 项目 item.Id 未定义,因为 item 可能未在您的 js 脚本中定义。

【讨论】:

以上是关于将 Razor 语法变量传递给 Html Helper 的 javascript onclick的主要内容,如果未能解决你的问题,请参考以下文章

如何将值从javascript变量传递给剃刀变量?

如何将 lambda 传递给 Razor 辅助方法?

.net MVC,Razor语法详细介绍

MVC 4 - Razor - 将变量传递到 href url

C#通过Razor语法动态赋值渲染HTML前端界

如何将可操作的控制字符从 JSON 文本元素传递到 razor 组件 Blazor 变量