Frage

Ich übergeben einige Modellinformationen an einen ActionLink, aber ich möchte die Aktion auch die Werte einiger Eingänge auf der Seite bereitstellen. Zum Beispiel, wenn ich so etwas hatte:

<input Name="MyInput" />

<%: Html.ActionLink("MyAction", "MyController", Model.Value);

Ich möchte, dass sich die Aktion sowohl des Modells als auch des Werts (der über Parameter übergeben wird) und des Werts von MyInput. Normalerweise würde ich eine Formcollection verwenden, aber ich kann in diesem Fall nicht, da ich keine Einreichung mache.

Wie kann ich den Wert von MyInput an MyAction übergeben? Müsste ich meinem Modell eine Eigenschaft namens MyInput hinzufügen? Angenommen, dies würde funktionieren, gibt es einen einfacheren Weg oder zumindest eines, bei dem das Modell nicht geändert wird?

War es hilfreich?

Lösung

Es gibt keine Möglichkeit, dies in HTML zu tun. Daher gibt es in ASP.NET MVC keine Möglichkeit, dies zu tun.

Es gibt zwei mögliche Lösungen dafür, aus denen Sie auswählen können:

  1. Verwenden Sie JavaScript so, dass Sie, wenn der Benutzer das Textfeld bearbeitet, den Wert des Anker -Tags dynamisch ändern, um das zu enthalten, was er eingegeben hat. Sie können dafür keine ASP.NET -Routing verwenden, da dies auf dem Server ausgeführt wird und Sie Client -Seitencode benötigen.

  2. Machen Sie ein Formular anstelle eines Links ein. Dies ist der empfohlene Weg in HTML. Wenn der Benutzer Daten übermittelt, sollte dies in einem Formular sein. Wickeln Sie alles in Form eines Formulars und platzieren Sie die Textbox und eine Schaltfläche dort ein. Legen Sie die Aktion des Formulars so ein, dass sie die URL sein soll, für die sie veröffentlichen sollen.

Dies ist die gleiche Antwort wie ich eingebracht habe diese Frage, Obwohl der Assiker der anderen Frage eine etwas andere Idee gehabt haben könnte.

Andere Tipps

Ich stellte fest, dass ich wahrscheinlich die Werte des Textfelds über JavaScript hätte lesen können (ich hätte wahrscheinlich JQuery verwendet) und sie als Parameter als Teil eines anonymen Typs übergeben (anstatt nur Modell.Value). Ich habe mich jedoch entschlossen, von einem Aktionslink zu nur ein Formular einzusenden und die FormCollection zu wechseln. Es machte nur sinnvoller mit der Seite, die ich baute.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top