【问题标题】:Passing Razor syntax variable into javascript onclick of an Html Helper将 Razor 语法变量传递给 Html Helper 的 javascript onclick
【发布时间】: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 感谢我试图获得的洞察力,但是我一生都无法记住/找到语法,你能用一个例子来详细说明

标签: javascript c# html asp.net-mvc razor


【解决方案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 脚本中定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-30
    • 2018-12-14
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    相关资源
    最近更新 更多