2016-08-04 7 views
0

Razor foreachを実行しているときに、Razor値を別のJavaScript関数killDatabaseに渡すBootstrapポップオーバーでボタンを作成しようとしています。このコードでは選択できるボタンのリストが作成されますが、ボタンを押してオプションの1つを削除することもできます。コードはエラーを投げず、削除ボタンのいずれかが関連すると思われる要素ではなく最後の要素を常に削除するという事実を除いて、すべてが完全に機能します。私はこれは、関数がonclickで呼び出され、その時点で@strが最後の要素の名前であると仮定していると仮定していますが、その要素を一意にするためにその値を格納する方法があるのでしょうか?私はforeachのJavaScript変数を追加しようとしましたが、それでも同じ問題が発生しました。MVC @foreachとJavaScript Confusion

<div class="btn-group-vertical btn-block" data-toggle="buttons" id="btns"> 
    @foreach (var str in Model) 
    { 

    <div id="popover-content" hidden> 
     Are you sure you would like to permanently delete this query from the database?<br /> 
     <button onclick="killDatabase('@str')" class="btn btn-primary btn-sm" style="float:left; margin-bottom: 10px;">Yes</button> 
     <button class="btn btn-sm btn-primary" style="float:left;">No</button> 
    </div> 
     <label class="btn btn-default" style="height:auto"> 
      <div class="form-group" style="height:auto; padding-bottom: 10px;"> 
       <input type="radio" name="query" value="@str" /> 
       <span class="pull-left">@str</span> 
       <span class="pull-right"> 
       <button class="btn btn-sm btn-danger" style="margin-top:-2px;" data-toggle="popover" title="Confirm Deletion" data-placement="bottom"> 
       <span class="glyphicon glyphicon-trash"></span></button></span> 
      </div> 
     </label> 

    } 
</div> 
+0

このコードは外部のJavascriptファイル内にありますか?もしそうなら、サーバ側の変数を参照するための剃刀構文(例えば '@ str')を使用することはできません。 –

+0

あなたが示したコードでは、str変数(ループ内のイテレータ)を 'killDatabase'メソッドに渡しています。メソッドは何をしますか?ページのビューソースを作成するときに一意の 'str'変数がレンダリングされていますか? – Shyju

+0

@RionWilliams申し訳ありませんが、これは外部のJavaScriptではなく、ビュー内にあることに言及してください。私が言ったように、 'killDatabase'に渡すときを除いて' @ str'の他の参照を含め、他のすべてがうまく動作します –

答えて

0

それはAJAXについて本当に混乱している私だったので、だから私はこの質問を閉じるつもりです。それは私が悪いAJAXコールを持っていて、ページがロードされた後で初期化されたポップオーバーで何かをしようとしていたので、そのポップアップで@strという値を使用しようとすると、最新の値。私は、コードをより合理化された、バグの少ないデザインに修正しました。