19

所以我试图通过使用剃刀'@'符号(在MVC-4视图)的JavaScript函数传递参数,但我越来越语法错误:“未终止的字符串常量”如何将剃须刀值传递给一个jQuery的函数,在MVC视图

有没有另一种方法,我应该写这个?

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

我用同样的语法这个答案https://stackoverflow.com/a/5179316/1662619

编辑:

它只是一个语法错误,功能仍然有效

+0

解决方案: - 除去围绕@ item.ID – Kings

回答

26

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

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

而且它可以获取使用

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

这是一个不错的解决方案,谢谢 – Jimmy

0

你试着用:

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

我在javascript函数的末尾添加了分号N通话AssignButtonClicked('@item.ID');

+0

啊,还是一样的语法错误 – Jimmy

+0

语法错误单引号。我是'onclick =“javascript:alert('@ Model.username.ToString()');” ' –

2

试试这个,

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

脚本

<script type="text/javascript"> 

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

仍然给出相同的语法错误 – Jimmy

+0

@Jim Barton它完美的工作在我的项目上。你可以给'foreach'循环显示一些代码。 – Jaimin

+0

输入标签在​​如果这有所作为?循环的其余部分只是由​​@ Html.DisplayFor(modelItem => item.Forename)行等。 – Jimmy

2

作为替代方案,您可以使用其他方式来获得@item.ID在jQuery函数。只需添加Hiden跨度并在您的功能中获得它的价值。

说,你有名单:

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

试这

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

为了避免这种问题,你可以建立在C#代码段所有js函数调用。

相反的:

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

用途:

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