Laden...

ActionLink - Daten nicht über URL übertragen

Erstellt von flotteBiene vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.575 Views
F
flotteBiene Themenstarter:in
4 Beiträge seit 2018
vor 5 Jahren
ActionLink - Daten nicht über URL übertragen

Hallo zusammen,

nach langer Suche, denke ich zwar dass es eine Lösung für mein Problem gibt ... in einigen Beiträgen im Netz gesehen. Doch bei mir funktionieren die Ansätze nicht.

Meine Aufgabe besteht darin ein vorhandenes Programm so umzuschreiben, dass keine Informationen über die URL übertragen werden.

Es handelt sich um eine ASP.NET MVC 3 VS 2015 Anwendung. Diese Anwendung bekommt Daten über eine Schnittstelle zur Verfügung gestellt ... jede Datenzeile wird als Link (html.actionlink) verwendet. Und das ist auch mein Problem .... actionlink sendet die Daten per GET über die URL....

Nach langer Suche habe ich verschiedene Lösungen im Netz gefunden, die für mich am logischsten ist die Ajax.actionlink Lösung unter Verwendung von jQuery. Schöne Lösung ohne viel an der Anwendung ändern zu müssen.

Doch wenn ich die Lösung umzusetzen versuche, funktioniert der Link zwar immer noch aber eben doch wieder über die URL.

Mein Ausbilder meint ich solle mir die Lösung erarbeiten, versuche ich auch .... möchte auch keine fertige Lösung .... deshalb poste ich auch keine Details ....

Aber vielleicht könnt ihr mich soweit unterstützen, dass ich verstehe wie das zusammenhängt und wo ich ansetzen muss

Freue mich auf Hinweise

16.842 Beiträge seit 2008
vor 5 Jahren

ActionLinks sind auch nicht gerade das Mittel zu Wahl. Waren sie nie und werden sie nie.
Besser sind immer Routen.

Informationen im Sinne einer Weiterleitung (was ein Link immer ist) können immer nur über GET übertragen werden.
Daran ändert auch Ajax nichts.

Ajax ändert nur die Sichtbarkeit im Browser in der Adresszeile (und das Microsoft Ajax Paket ist seit Jahren abgekündigt und nicht mehr supported).
Technisch gesehen sonst ist alles identisch - außer Du wechselst auf HTTP POST.
Dann sprechen wir aber von was völlig anderem.

Daher als erstes: von was für Informationen sprechen wir denn, die nicht mehr im Link auftauchen sollen?
Dann kann man auch eine technisch saubere Lösung anbieten.

F
flotteBiene Themenstarter:in
4 Beiträge seit 2018
vor 5 Jahren

Hallo Abt,

Danke schon mal für den Hinweis mit dem Microsoft Ajax Packet, das wusste ich noch nicht.

Die Forms habe ich von GET auf POST umgestellt und dachte dass ich das mit den AchtionLinks ebenso machen könnte ... geht leider nicht.


 @Html.ActionLink(item.Date, "ItemDetails", "Details", new
                    {
                        Datum = datum.ToString(),
                        SerienNr= item.serial.ToString()
                    }, null)

die Daten die über die URL übertragen werden, werden in der Where-Clause einem SQL-Statement eingesetzt. (Insert, Update, Delete bzw. Select)

Das Ergebnis wird dann in einer neuen Seite angezeigt:

Zeit, Datum, Betreff, Kurztext, Link z.B. eine SubSerienNr
Zeit, Datum, Betreff, Kurztext, Link z.B. eine SubSerienNr
Zeit, Datum, Betreff, Kurztext, Link z.B. eine SubSerienNr
Zeit, Datum, Betreff, Kurztext, Link z.B. eine SubSerienNr
Zeit, Datum, Betreff, Kurztext, Link z.B. eine SubSerienNr

Hoffe so ist nachvollziehbar was ich anpassen muss

16.842 Beiträge seit 2008
vor 5 Jahren

Schau Dir HTTP Basics an. GET ist was völlig anderes als POST.
Und ActionLinks ist GET-Only; so funktioniert einfach diese Technik. Action-Link produziert nun mal ein <a>-Tag; da gibts nur GET.

Da aber keiner weiß, was Du eigentlich für Informationen übertragen willst und was Dein Workflow ist, kann Dir auch kaum einer ohne hellseherische Fähigkeiten helfen.
Wenn es ein Formular werden soll, dann kommst Du an POST nicht vorbei - und das geht nicht mit ActionLinks; wer hier die Idee hat Formulare mit ActionLinks zu versehen, hat das gesamte Prinzip nicht im Ansatz verstanden.

Das ist wie mit ner Gabel zur Suppe: klappt nicht; dafür nicht vorgesehen.
Schau Dir bitte die Basics an. 👍

F
flotteBiene Themenstarter:in
4 Beiträge seit 2018
vor 5 Jahren

Hi Abt,

ich möchte das ja lernen - aber im Moment habe ich keine Ahnung wie ich die Informationen rüber bringen soll so dass keine hellseherische Fähigkeiten benötigt werden.

ActionLinks ist GET-Only --> das habe ich verstanden, den unterschied zwischen GET und POST denke ich auch ... werden mir auch die Basics nochmal anschauen.
... und ich möchte kein Formular verwenden ich suche eine alternative zum ActionLink mit der es möglich ist die Daten nicht sichtbar zu übertragen. Evtl. "ViewBag"

Aber jetzt habe ich zwei Probleme:*einmal wie Beschreibe ich eine Problemstellung so dass keine hellseherische Fähigkeiten benötigt werden. *und dann das eigentliche Problem mit der Übergabe der Daten

1.029 Beiträge seit 2010
vor 5 Jahren

Hi,

nur als Tipp: Wenn du POST (und wahrscheinlich auch andere HTTP-Verben) ablehnst - brauchst du dir im Prinzip keine Hoffnungen machen die Aufgabe erfüllen zu können.

Ein POST-Request braucht nicht zwingend ein richtiges Formular - per POST sendest du einfach einen Payload an eine bestimmte URL. Das kann beinhalten:

  • Nutzdaten einer Form (auch das kann man via Javascript unsichtbar halten - man hat dann nur einen Button oder einen Link der eben Javascript ausführt)
  • JSON
  • XML
  • Dateien
  • etc. pp.

LG

PS: ViewBag ist für die Übergabe von Daten von Controller an die View

F
flotteBiene Themenstarter:in
4 Beiträge seit 2018
vor 5 Jahren

Hi Taipi88,

Danke für die Antwort, hast du zufällig noch einen Hinweis wo ich nachlesen kann wie die einzelnen Ansätze funktionieren bzw. wie ich sie umsetzen kann.

Im Moment bin ich nicht in der Lage zu sagen, was ein guter Ansatz ist. Grundsätzlich lehne ich gar nichts ab - weil ich das zum jetzigen Zeitpunkt auch nicht könnte. Ich versuche mir aus den Informationen die ich hier oder generell im Netz finde ein Bild zu machen - leider ist das noch sehr verschwommen.

1.029 Beiträge seit 2010
vor 5 Jahren

Hi,

klar - aber du solltest hier wirklich nicht versuchen abzuschreiben - es gilt nachzulesen wieso das überhaupt so funktioniert. (Zudem solltest du denke ich dringend Google üben - klingt doof - ist aber wichtig um sich Informationen möglichst schnell und selbstständig zu organisieren)

Auf folgendem Link ist ein kleines Tutorial zum posten eines JSON-Payloads an eine MVC3-Anwendung: https://juristr.com/blog/2011/08/posting-json-data-to-aspnet-mvc-3-web/

Da du mit JSON wahrscheinlich auch nicht vertraut bist: JSON ist eines der Standardformate für Kommunikation von Programmen (denn hier kommuniziert dein Frontend-Programm (JavaScript) mit deinem Backend-Programm (C# MVC3)) Ist im Vergleich mit XML etwas leichtgewichtiger... So ungefähr jede Umgebung bietet dir jedenfalls Hilfsmittel um mit JSON umzugehen wie man auch im Beispiel sieht - im JavaScript-Teil wird ein Objekt serialisiert (in einen String umgewandelt)- und auf der C#-Seite wird der eingehende String wieder deserialisiert (in ein Objekt geparsed).

LG

16.842 Beiträge seit 2008
vor 5 Jahren

Du musst nicht alles wissen; das tun wir auch nicht. Das kann niemand.
Aber Du brauchst ein selbstständiges Vorgehen um an Informationen zu kommen: und das ist i.d.R. Google, Bing und Co.

Auch wir würden googlen um Dir nachher Tutorials rauszusuchen.
Das kannst im Prinzip auch selbst 😉

ASP.NET selbst ist ein Mix von verschiedenen Technologien; die muss man in einem gewissen Maße eben beherrschen.
Und es kann sein, dass man verschiedene Tutorials durchmachen muss um diesen Mix zu erlernen.
Das ist völlig normal; jeder hat mal angefangen.