所以我试图使用razor'@'表示法(在MVC-4视图中)将参数传递给javascript函数但是我收到语法错误:“未终止的字符串常量”
我还有另一种方法吗?
@foreach (var item in Model)
{
...
<input type="button" value="Assign" onclick="AssignButtonClicked('@item.ID')" />
}
我使用了与此答案相同的语法https://stackoverflow.com/a/5179316/1662619
编辑:
这只是语法错误,功能仍然有效
答案 0 :(得分:36)
<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 " />