Как передать значение бритвы функции jquery в представлении mvc
Итак, я пытаюсь передать параметр функции javascript, используя нотацию "@" бритвы (в представлении MVC-4), но я получаю синтаксическую ошибку: "Unterminated string constant"
Есть ли другой способ написать это?
@foreach (var item in Model)
{
...
<input type="button" value="Assign" onclick="AssignButtonClicked('@item.ID')" />
}
Я использовал тот же синтаксис, что и этот ответ qaru.site/info/275902/...
Edit:
Это просто синтаксическая ошибка, функциональность все еще работает
Ответы
Ответ 1
Если вы можете использовать JQuery . data()
<input type="button" value="Assign" onclick="AssignButtonClicked(this)"
data-assigned-id="@item.ID" />
Далее он может быть извлечен с помощью
function AssignButtonClicked(elem){
var id= $(elem).data('assigned-id');
}
Ответ 2
попробуйте это
<input type="button" value="Assign"
onclick="@("AssignButtonClicked('"+item.ID+"')")" />
Ответ 3
Попробуйте это,
<input type="button" value="Assign" onclick="AssignButtonClicked(@item.ID);" />
Script
<script type="text/javascript">
function AssignButtonClicked(obj) {
alert(obj);
return false;
}
</script>
Ответ 4
В качестве альтернативы вы можете использовать другой способ получить @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 add:
<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>
Ответ 5
Вы пытались:
<input type="button" value="Assign" onclick="AssignButtonClicked('@item.ID');" />
Я добавил точку с запятой в конце вызова функции javascript AssignButtonClicked('@item.ID');
Ответ 6
Чтобы избежать такого рода проблем, вы можете создать весь свой вызов функции js в разделе кода С#.
Вместо:
<input type="button" value="Assign" onclick="AssignButtonClicked('@item.ID')" />
Использование:
@{
var assignFunctionCall = "AssignButtonClicked(" + item.ID + ")";
}
<input type="button" value="Assign" onclick="@assignFunctionCall " />