2010-11-10 14 views

Répondre

2

Vous pouvez utiliser un verbatim string literal - à partir de la chaîne avec le symbole @ - mais il est probablement préférable de déplacer votre JavaScript dans un fichier .js distinct, as Darin suggests.

<%= Html.ActionLink("Delete", "delete", new { id = Model.Id }, 
        new { 
          @class = "button-link", 
          onclick = @"javascript; 
             javascript goes here; 
             javascript goes here; 
             javascript goes here; 
             return false;" 
         }); 
%> 
+0

Que diriez-vous de cela dans le code javscript $ ('"+ Html.AntiForgeryToken() +"') – Eldar

1

Ne pas répondre directement à votre question, mais en proposant une alternative: javascript n'a rien à voir en HTML et les deux ne doit jamais être mélangé. Il devrait être dans un fichier séparé:

<%= Html.ActionLink(
    "Delete", "delete", new { id = Model.Id }, 
    new { @class = "button-link", id = "foo" }); %> 

puis dans un fichier js séparé (en utilisant jquery):

$(function() { 
    $('#foo').click(function() { 
     // TODO: put as many lines of javascript as you wish here 
     return false; 
    }); 
}); 

De cette façon, votre balisage est plus petit, les ressources statiques telles que le javascript est mis en cache par le navigateur client et vous n'avez pas besoin de s'inquiéter de simples, doubles, quotes triple, ...

+0

Je sais que votre solution est meilleure, mais comment traiter avec des emplacements comme ce $ ('"+ Html.AntiForgeryToken() +"') .val() – Eldar

+0

d'une manière est déclarent la variable globale dans la tête de page quelque chose comme ceci var csrf_token = "token" et appellent ceci dans le dossier js séparé, je pense que ceci est une mauvaise idée, des suggestions? – Eldar

+0

Vous pouvez avoir un formulaire contenant le jeton antiforgery et ensuite simplement utiliser le [jquery form plugin] (http://jquery.malsup.com/form/) pour l'AJAXify. Pas besoin d'utiliser des liens d'action. –