J'essaie donc de passer un paramètre à une fonction javascript en utilisant la notation '@' du rasoir (dans une vue MVC-4) mais j'obtiens une erreur de syntaxe: "Constante de chaîne non terminée"
Existe-t-il une autre façon d'écrire cela?
@foreach (var item in Model)
{
...
<input type="button" value="Assign" onclick="AssignButtonClicked('@item.ID')" />
}
J'ai utilisé la même syntaxe que cette réponse https://stackoverflow.com/a/5179316/1662619
Modifier:
C'est juste une erreur de syntaxe, la fonctionnalité fonctionne toujours
essaye ça
<input type="button" value="Assign"
onclick="@("AssignButtonClicked('"+item.ID+"')")" />
Essaye ça,
<input type="button" value="Assign" onclick="AssignButtonClicked(@item.ID);" />
Script
<script type="text/javascript">
function AssignButtonClicked(obj) {
alert(obj);
return false;
}
</script>
Comme alternative, vous pouvez utiliser l'autre moyen pour obtenir @item.ID
dans votre fonction jQuery. Ajoutez simplement la durée cachée avec elle et obtenez sa valeur dans votre fonction.
Dis, tu as la liste:
<ul>
@foreach (var item in Model)
{
...
<li> <input type="button" value="Assign" onclick="AssignButtonClicked()" />
<span class="hidenID">@item.ID</span>
</li>
}
</ul>
que dans votre script, ajoutez:
<script>
$(document).ready(function(){
$('.hidenID').hide() //**hide your span
});
function AssignButtonClicked()
{
...
var id = $(this).closest('li').find('.hidenID').text();
...
}
</script>
Mais à mon avis, une meilleure approche pour jQuery est la suivante:
<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>
Vous avez essayé avec:
<input type="button" value="Assign" onclick="AssignButtonClicked('@item.ID');" />
J'ai ajouté un point-virgule à la fin de l'appel de fonction javascript AssignButtonClicked('@item.ID');
Pour éviter ce type de problème, vous pouvez créer tous vos appels de fonction js dans la section de code c #.
Au lieu de:
<input type="button" value="Assign" onclick="AssignButtonClicked('@item.ID')" />
Utilisation:
@{
var assignFunctionCall = "AssignButtonClicked(" + item.ID + ")";
}
<input type="button" value="Assign" onclick="@assignFunctionCall " />