web-dev-qa-db-ja.com

MVCビューで、かみそりの値をjquery関数に渡す方法

だから私はかみそりの '@'表記(MVC-4ビューで)を使用してjavascript関数にパラメーターを渡そうとしていますが、構文エラーが発生しています: "Unterminated string constant"

これを書くべき別の方法はありますか?

@foreach (var item in Model)
{
 ...
    <input type="button" value="Assign" onclick="AssignButtonClicked('@item.ID')" />
}

私はこの答えと同じ構文を使用しました https://stackoverflow.com/a/5179316/1662619

編集:

これは単なる構文エラーであり、機能は引き続き機能します

30
Jimmy

JQuery。data() を使用できる場合

<input type="button" value="Assign" onclick="AssignButtonClicked(this)" 
       data-assigned-id="@item.ID" />

さらに、それを使用して取得することができます

function AssignButtonClicked(elem){
     var id= $(elem).data('assigned-id');
}
37
Satpal

これを試して

 <input type="button" value="Assign"
   onclick="@("AssignButtonClicked('"+item.ID+"')")"  />
13
Amit

これを試して、

 <input type="button" value="Assign" onclick="AssignButtonClicked(@item.ID);" />

スクリプト

<script type="text/javascript">

 function AssignButtonClicked(obj) {
        alert(obj);
        return false;
    }
</script>
4
Jaimin

別の方法として、他の方法を使用して@item.IDをjQuery関数で。ヒデンスパンを追加して、関数で値を取得するだけです。

リストがあるとします:

<ul>
@foreach (var item in Model)
{
 ...
   <li> <input type="button" value="Assign" onclick="AssignButtonClicked()" />
        <span class="hidenID">@item.ID</span>
</li>
}
</ul>

スクリプトに追加するものより:

<script>
$(document).ready(function(){
$('.hidenID').hide() //**hide your span
});

function AssignButtonClicked()
{
...
var id = $(this).closest('li').find('.hidenID').text();
...
}

</script>

しかし、私の考えでは、jQueryのより良いアプローチは次のとおりです。

    <ul>
        @foreach (var item in Model)
        {
         ...
           <li> <input type="button" value="Assign" class="button" />
                <span class="hidenID">@item.ID</span>
        </li>
        }
        </ul>
    <script>
        $(document).ready(function(){
        $('.hidenID').hide() //**hide your span
        });

        $(function(){
         $('.button').click(function(){
        ...
         var id = $(this).closest('li').find('.hidenID').text();
        ...
        }
    });

});

    </script>
2
Andriy Gubal

あなたが試した:

_<input type="button" value="Assign" onclick="AssignButtonClicked('@item.ID');" />
_

JavaScript関数呼び出しAssignButtonClicked('@item.ID');の最後にセミコロンを追加しました

0
Daniele

この種の問題を回避するには、すべてのjs関数呼び出しをc#コードセクションでビルドします。

の代わりに:

<input type="button" value="Assign" onclick="AssignButtonClicked('@item.ID')" />

つかいます:

@{
  var assignFunctionCall = "AssignButtonClicked(" + item.ID + ")";
}
<input type="button" value="Assign" onclick="@assignFunctionCall " />
0
Bbone