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 " /> 
相關問題