ASP.NET MVC Entfernen query-string-Methode in Aktion
Habe ich eine action-Methode, die wie folgt aussieht:
public ActionResult Index(string message)
{
if (message != null)
{
ViewBag.Message = message;
}
return View();
}
Was passiert, ist, dass die url eine Anfrage an das Aussehen wird:
www.mysite.com/controller/?message=Hello%20world
Aber ich wollen Sie es zu schauen
www.mysite.com/controller/
Ist es ein Weg, um entfernen Sie die Abfrage-Zeichenfolge in der actionmethod?
sagen Sie, Sie wollen eine Standard-Nachricht, wenn Sie nicht geben Sie einen querystring? Oder, das Sie ausblenden möchten Sie die querystring-unabhängig von der Art der Nachricht gesendet, auf die url zunächst?
Die zweite, im Grunde möchte ich, die Nachricht zu verarbeiten (es kann alles sein) und es nicht auf die url.
Die zweite, im Grunde möchte ich, die Nachricht zu verarbeiten (es kann alles sein) und es nicht auf die url.
InformationsquelleAutor willvv | 2012-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, es sei denn, Sie verwenden einen POST-Methode die Daten übergeben bekommen irgendwie. Eine alternative kann die Verwendung eines zwischen-Klasse.
Oder. wenn Sie benutzten einfach einen POST
Ist das immer noch die beste Lösung? Ich habe eine Seite nur dann anzeigen zu bestimmten Stunden, und es braucht ein Modell, aber diese Aktion ist nicht öffentlich zugänglich und ich will es haben eine hübsche URL wie /Registrierung/AfterHours und nicht /Registrierung/AfterHours?DateTime...[crazy chars]. Egal, das funktioniert.
InformationsquelleAutor naspinski
Ich bin nicht sicher, ob Sie wirklich denken, dass durch. Wenn Sie entfernen Sie die Abfrage-string... entfernen Sie dann den Abfrage-string.. dh die Seite wird nicht die query-string-Wert zu tun, was es tun muss.
Es gibt eine Menge von verschiedenen hacks, die Sie tun könnten.. alle von Ihnen sind nicht ideal. Könntest du javascript verwenden, um Streifen aus dem Abfrage-string. Sie könnte umgeleitet zu einer querystring-weniger Seite, nach setzen einer session-variable.. es ist alles ziemlich hässlich.
Denken Sie daran, dass das, was der Benutzer sieht, in der Adressleiste ist auf dem client. Die client-Steuerelemente. Sie können mit ihm hantieren via javascript, aber damit ist in der Regel eine schlechte Idee. Da versteckt Dinge, die vom Benutzer angesehen werden können malware-ähnliches Verhalten.
InformationsquelleAutor Erik Funkenbusch
Blick in Routen. Sie definieren, wie eine url mit Parametern geschrieben werden.
Wenn Sie ein neues MVC-Anwendung und Blick auf die Globale.asax.cs-Datei unter `RegisterRoutes(). Sie sollte ein Eintrag zu finden.
Blick auf die einzelnen Artikel:
example.org/home/index?id=2
geschriebenexample.org/home/index/2
stattSo, dass die route die es so machen, wenn Sie gehen, um example.org wird es nehme an, du meinst example.org/home/index{id ist optional}.
Arbeiten, von, dass, können Sie beginnen, um zu sehen, wie eigene Routen zu erstellen.
Nun, um Ihre Frage, die Antwort ist kurz ja Sie könnte die URL so Aussehen, aber nicht wirklich. Müssten Sie definieren eine route mit einer Standard-Nachricht, und es würde nur so Aussehen, dass wenn jemand nicht eine Nachricht angeben. Sie haben zu sagen, der controller, was die Nachricht ist. Tut mir Leid, aber das beste, was Sie tun können, ist zu definieren, eine route, die Ihnen
/message/Hello%20World
und mit string.ersetzen Sie machen, die sehen sogar noch schöner `/Nachricht/hello_world'wenn Sie Lesen, meine ganze Antwort, die Sie werden sehen, ich Adresse
InformationsquelleAutor Joe
Empfehle ich ein slug. Check out this post: SOF Slug post
In bisherigen Anwendungen, ich nahm diesen Ansatz zu entfernen Abfragezeichenfolgen aus der URL.
InformationsquelleAutor JoshYates1980