Frage

auf unserer Website wir Umschreiben url massive Mengen von Datenbank generierten Seiten zu erzeugen. Auf jeder Seite gibt es ein Login-Steuerelement für die Nutzer. wie folgt aus:

Interne aspx Seite: /DB.aspx?id=123 Benutzer sichtbar url: /ABC/123.aspx, /ABC/456.aspx ... (URL neu geschrieben)

Leider hat der Tag auf jeder Seite eine Aktion Attribut „DB.aspx? Id = 123“. wenn der Benutzer auf die Schaltfläche klickt wird der Browser, der natürlich zu /ABC/DB.aspx?id=123 Posting nicht existiert.

Lösungen habe ich versucht: 1. das Attribut Aktion ändern Htmlform von Subklassen. Dies zerstört die alle anderen Formen auf der Website. 2. Nehmen Sie das action-Attribut (so dass der Browser immer auf die gleiche URL veröffentlichen). Dies funktioniert auf den neu geschriebenen Seiten, sondern auf „/“ (der default.aspx im Stammverzeichnis) i eine Meldung erhalten, dass das Verb Post nicht erlaubt ist, auf „/“ (IIS 6 und ich habe keine Kontrolle über Mappings)

jemand?

War es hilfreich?

Lösung

Sehen Sie sich diese wirklich schöne Blog-Post von Scott gu http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx .

"Insbesondere können Sie die Vorteile des neuen ASP.NET 2.0 Steuerungs Adapter Erweiterbarkeit Architektur nehmen Sie die Wiedergabe der Steuerung anpassen, und außer Kraft setzen ihre‚Aktion‘Attributwert mit einem Wert, den Sie bieten. Dies erfordert Sie nicht zu ändern beliebigen Code in Ihre ASPX-Seiten "

, um den Abschnitt überprüfen:. "Umgang mit ASP.NET Postbacks mit URL-Rewriting", habe ich den Adapter verwendet er erfolgreich geschrieben

Ps. beachten Sie einige Probleme auf asp.net gibt es, wenn URL-Rewrite verwenden, wenn cookieless Sitzung verwendet wird, und die umgeschriebene URL ist tiefer als die ursprüngliche Seite, genau wie die, die Sie haben. (/ Abc / apage vs. / db?). Das Problem ist, direkt in den Quellcode des Frameworks gibt es Workarounds, aber das ist ein ganzes Thema (mit Kompromissen :( ... Sie könnten sie auf dem gleichen Niveau haben wollen).

Andere Tipps

Semantics vielleicht, aber tut das Attribut action = "DB.aspx? Id = 123" oder "/DB.aspx?id=123"? Ihr URL-Rewriting Unter der Annahme zu physischen Seiten ermöglicht Passthrough, das Ihr Problem sein könnte.

Ich habe es nie, aber ich sah den Code Reflektor und ich denke, man kann es auf diese Weise beheben:

Auf der Seite:

this.Form.Action = null;

oder:

this.Form.SetAttribute("action", null);

Wenn das nicht funktioniert, stellen Sie einfach den Pfad Sie:

this.Form.SetAttribute ( "Aktion", "ABC / 123.aspx");

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