将 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的主要内容,如果未能解决你的问题,请参考以下文章