2010-05-18 9 views
23

Wie JavaScript-Funktion in html.actionlink in asp.net mvc aufrufen?wie JavaScript-Funktion in html.actionlink in asp.net mvc aufrufen?

i wan eine Methode aufrufen, die in Java-Script ist aber, wie es innerhalb Html.ActionLink in derselben Seite aufrufen Dank im Voraus

+0

Für mich ist es nicht klar, was Sie erreichen möchten. Html.ActionLink läuft auf dem Server, Ihr Javascript läuft auf dem Client; Es gibt keine Möglichkeit, dass der eine den anderen nennen kann. Meinst du, du möchtest, dass ein Teil von Javascript ausgeführt wird, wenn auf den Link geklickt wird, der von Html.ActionLink erstellt wurde? – Thomas

+0

Ja, ich möchte eine Methode aufrufen, wenn auf bestimmte Verbindung geklickt wird – Renu123

Antwort

51

Sie die Htmlattributes anonymes Objekt, wie diese verwenden müssen:

<%= Html.ActionLink("linky", "action", "controller", new { onclick = "someFunction();"}) %> 

man könnte ihm auch eine ID gibt ein, um es mit jquery Attach/was auch immer, wie folgt aus:

<%= Html.ActionLink("linky", "action", "controller", new { id = "myLink" }) %> 


$('#myLink').click(function() { /* bla */ }); 
+0

wird der erste, Actionlink immer noch an den Controller? Wenn ja, wie würde ich es deaktivieren? – Djeroen

+1

@Djeroen, okay, ich bin ein Idiot, warum würde ich sogar einen Actionlink brauchen, wenn ich nicht möchte, dass er einen Controller anruft – Djeroen

+0

Können wir dasselbe mit Ajax.ActionLink erreichen? – GreyCloud

20

Für in Ihrem einem Aufruf Javascript ction link Sie müssen einfach actionlink wie folgt schreiben:

@Html.ActionLink("Delete", "Your-Action", new { id = item.id }, 
       new { onclick="return confirm('Are you sure?');"}) 

Verwechseln Sie nicht zwischen Route Werte und die HTML-Attribute.

+1

Perfekte Antwort .. –

4
@Html.ActionLink("Edit","ActionName",new{id=item.id},new{onclick="functionname();"}) 
6
<a onclick="MyFunc()">blabla..</a> 

Es gibt nichts in @ Html.ActionLink, dass Sie in diesem Fall nutzen können. Und Rasiermesser ist Evel von selbst, lass es fallen, wo du kannst.

+0

für mich ist dies die beste Antwort! – Ashi

+1

Einverstanden. Wenn Sie nur eine Javascript-Funktion ausführen möchten, ist dies die richtige Antwort. Verwenden Sie einen ActionLink, wenn Sie den Controller aufrufen möchten, verwenden Sie das obige, um einfach eine JavaScript-Funktion aufzurufen. – AxleWack

1

Dies ist der einzige, der für mich in .cshtml Datei gearbeitet:

@Html.ActionLink(
    "Name", 
    "Action", 
    "Controller", 
    routeValues: null, 
    htmlAttributes:new Dictionary<string, object> {{ "onclick", "alert('Test');" }}) 

Ich hoffe, das hilft.

0

Das ist ein bisschen von einem alten Post, aber es gibt tatsächlich eine Möglichkeit, einen Onclick Betreiber zu tun, die eine Funktion, anstatt zu gehen überall in ASP.NET ruft

helper.ActionLink("Choose", null, null, null, 
    new {@onclick = "Locations.Choose(" + location.Id + ")", @href="#"}) 

Wenn Sie leere Anführungszeichen angeben oder die Wie im Controller/in der Aktion wird wahrscheinlich ein Link zu Ihrer Liste hinzugefügt. Sie können das tun und eine Rückgabe false im onclick machen. Sie können mehr darüber lesen:

What's the effect of adding 'return false' to a click event listener?

Wenn Sie das Onclick in einer cshtml Datei tun, würde es etwas sauberer sein, nur um den Link selbst (a href ...) angeben, statt dass der ActionLink damit umgehen kann. Wenn Sie einen HtmlHelper erstellen, wie mein Beispiel oben, dann würde ich argumentieren, dass das Aufrufen von ActionLink eine gute Lösung ist, oder besser, wenn Sie stattdessen Tagbuilder verwenden.

Verwandte Themen