簡體   English   中英

如何在mvc視圖中將剃刀值傳遞給jquery函數

[英]how to pass a razor value to a jquery function, in an mvc view

所以我試圖使用razor'@'表示法(在MVC-4視圖中)將參數傳遞給javascript函數但是我收到語法錯誤:“未終止的字符串常量”

還有另一種方法我應該寫這個嗎?

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

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

編輯:

這只是一個語法錯誤,功能仍然有效

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

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

此外,它可以使用

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

試試這個

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

試試這個,

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

腳本

<script type="text/javascript">

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

作為替代方案,您可以使用另一種方式在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>

你嘗試過:

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

我在javascript函數調用AssignButtonClicked('@item.ID');的末尾添加了一個分號AssignButtonClicked('@item.ID');

要避免這種問題,您可以在c#代碼部分構建所有js函數調用。

代替:

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

使用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM