2017-06-20 45 views
1

ページをレンダリングしようとしているときに、ボタンをクリックして通知をトリガーします。私はこれを、ポップアップを行うために設定しました。Razorの構文変数をHTMLヘルパーのjavascript onclickに渡す

問題のボタンは、確認ダイアログを返すonclickイベントを持つ単純なかみそり構文のhtmlヘルパーです。しかし、私はこのための項目変数をレンダリングすることができないようです。

@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からの変数を使用することができます。

+1

あなたは一例 –

+0

Bhubanのおかげで文字列の連結を行いますそのようにしなければならなかったのは、@で行を始めることによって既に "コード"モードに切り替えていたということです。かみそりのコンパイラは@itemを見たこともありませんでした。 – asuppa

答えて

0

文字列を正しく閉じていません。次のことを試してみてください。

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

あなたのエラーがitemはおそらくあなたのjsスクリプトで定義されていないので、javascriptの項目item.Idが定義されていないと言っています。

2

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) }) 
+1

と理由を詳しく説明することができますが、私は私の人生のための構文を見つける/思い出すことができない、のonclickイベントで私が取得しようとしています何の洞察力のための – Dave

+0

Dave:完璧な意味で、ありがとう、細部をありがとう、うまくいけば、これはあまりにも長すぎる私は愚かなエラーに費やしました – asuppa

+1

@Daveまたは彼らの2番目の例のための私の答えでは、 '変数は文字列が正しく連結されていないためです。ケーキをカットする2つの方法。 – GibralterTop

関連する問題