如何在mvc视图中将剃刀值传递给jquery函数

时间:2013-08-19 10:25:13

标签: javascript asp.net-mvc asp.net-mvc-4 razor parameter-passing

所以我试图使用razor'@'表示法(在MVC-4视图中)将参数传递给javascript函数但是我收到语法错误:“未终止的字符串常量”

我还有另一种方法吗?

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

我使用了与此答案相同的语法https://stackoverflow.com/a/5179316/1662619

编辑:

这只是语法错误,功能仍然有效

6 个答案:

答案 0 :(得分:36)

如果您可以使用JQuery .data()

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

此外,它可以使用

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

答案 1 :(得分:13)

试试这个

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

答案 2 :(得分:4)

试试这个,

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

<强>脚本

<script type="text/javascript">

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

答案 3 :(得分:2)

作为替代方案,您可以使用另一种方式在jQuery函数中获取@item.ID。只需添加hiden span并在函数中获取它的价值。

说,你有清单:

<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>

答案 4 :(得分:0)

您尝试过:

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

我在javascript函数调用AssignButtonClicked('@item.ID');

的末尾添加了一个分号

答案 5 :(得分:0)

为避免此类问题,您可以在c#代码部分中构建所有js函数调用。

而不是:

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

使用:

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