32

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

我应该用另一种方式来写这个吗?

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

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

编辑:

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

4

6 回答 6

43

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

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

此外,它可以使用

function AssignButtonClicked(elem){
     var id= $(elem).data('assigned-id');
}
于 2013-08-19T12:00:48.743 回答
14

尝试这个

 <input type="button" value="Assign"
   onclick="@("AssignButtonClicked('"+item.ID+"')")"  />
于 2013-08-19T11:39:09.493 回答
4

尝试这个,

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

脚本

<script type="text/javascript">

 function AssignButtonClicked(obj) {
        alert(obj);
        return false;
    }
</script>
于 2013-08-19T10:42:45.877 回答
2

作为替代方案,您可以使用其他方式进入@item.ID您的 jQuery 函数。只需添加 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>
于 2013-08-19T11:16:00.277 回答
0

您尝试过:

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

我在 javascript 函数调用的末尾添加了一个分号AssignButtonClicked('@item.ID');

于 2013-08-19T10:39:52.217 回答
0

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

代替:

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

利用:

@{
  var assignFunctionCall = "AssignButtonClicked(" + item.ID + ")";
}
<input type="button" value="Assign" onclick="@assignFunctionCall " />
于 2015-05-03T22:09:08.227 回答