2017-06-20 80 views
1

尝试渲染页面,并在按钮单击时触发通知。我已经设定好了,现在只是做一个弹出窗口,因为它是一个更高级的内部应用程序。将Razor语法变量传递给Html Helper的javascript onclick

有问题的按钮是一个简单的剃​​刀语法的HTML帮手与onclick事件返回一个确认对话框。不过,我似乎无法为此呈现项目变量。

@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变量“删除未定义?”

我如何使用一个变量来自的foreach传入该对话框中的JavaScript之外,使信息更具描述。

+1

待办事项字符串连接这就是我试图去,但我不能为我的生活记得/发现语法,你可以用一个例子 –

+0

普本感谢您的洞察力在 – asuppa

回答

0

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

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

你的错误是说的JavaScript项目item.Id没有定义,因为item很可能无法在你的JS脚本中定义。

2

我能用string.FormatC#中解决我自己的问题。

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

原因阐述你必须这样做,是否已经通过用@开始一行来切换到“代码”模式。剃刀编译器甚至没有看到@item。 – Dave

+0

戴夫:非常有意义,谢谢你的细节,希望这可以节省一个人太长时间我花了一个愚蠢的错误 – asuppa

+1

@Dave或在我的答案为他们的第二个例子,他们包括一个JavaScript变量,而不是他们的foreach '因为字符串没有正确连接而变量。两种方法来削减蛋糕。 – GibralterTop