2017-06-20 50 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