Frage

Ich bin mit einem Problem der Verwendung von Query-String-Variablen in einer RESTful Asp.net MVC-Anwendung vorgestellt. Hat das die RESTful Muster verletzen?

Die Sache ist die, dass Asp.net MVC Standardroute verwendet wie:

/controller/action/id

Ich habe durch eine andere Controller-Aktion-Kombination passieren wie:

/controller/action/id/controllerX/actionX

, aber das wird nicht funktionieren, wenn ich in der Wurzel meiner Anwendung sein würde, weil die ersten drei Parameter weggelassen werden und die letzten beide werden als das erste Paar behandelt werden.

Statt dessen bin ich versucht, diese Notation zu verwenden, anstatt:

/controller/action/id?Param=controllerX/actionX

, die auch auf root funktionieren würde,

http://domain/?Param=controllerX/actionX

Aber ist das RESTful?

Ein bisschen eine Erklärung

Ich mag einen modularen Ansatz, meine Ansichten haben, als die normalen integriert mit PartialViews. Denn wenn ich eine Teilansicht, die auf vielen Seiten angezeigt wird Ich habe vide Daten für diese bestimmte Teilansicht in jede einzelne Controller-Aktion hinzufügen, die eine Ansicht zurückgibt, die diese bestimmte Teilansicht verwendet. Und ich denke, das ist eine falsche Art und Weise, Dinge zu tun. Controller auf Teilansichten abhängig werden, das kann (oder Gott bewahre kann nicht ) ist Teil der Hauptansicht sein.

Rendering-Aktionen statt Teilansichten kommen zur Rettung. Ich benutze meine eigene Html.RenderAction(), die in eine Controller-Aktion aufruft, die nur ihre eigenen Daten vorbereitet. Großes das funktioniert gut.

Das erste Problem war mit HTTP-Methode, die für alle Render Aktionen propagiert wurde. So habe ich es und ich kann HTTP-Methode steuern, wie Ich mag. Einige Aktionen können immer egal GET verwenden, wenn die Hauptansicht wurde gebucht zurück (also POST).

Das Problem ist, wenn diese Aktionen Teilansichten mit ihren eigenen FORM-Elementen zurück. Da meine Unter Aktionen können nicht direkt auf gebucht werden (weil sie nicht wissen würden, welche zurückkehren sehen) sie stattdessen zu der Ansicht Post tatsächlich. Alle Unter Aktionen mit Formen haben in der Regel HTTP-Methode aus der Hauptansicht propagiert, so dass sie tatsächlich Postbacks Aktion Ausführung ein.

Die Sache ist, dass nur die tatsächliche Form, die wieder seine POST Aktion ausgeführt werden soll veröffentlicht wurde. Andere sollten nur GET-Methode verwenden. Hier ist, wo mein zweites Controller / Aktionspaar ins Spiel kommt. Alle Unteraktionsformular Beiträge zurück zu

mainViewController/action/?PostForm=controller/action

, wo der zweite Parameter hilft, die Unter Aktion Rendering entscheiden sollte POST-Methode, um es zu verbreiten. Diese besondere Form validiert wird, wie in seiner Post-Aktion definiert.

Ich hoffe, das erklärt mein Problem ein bisschen mehr mit einem konkreten Beispiel. Dieses Problem bezieht sich auf meine gestrigen Frage .

War es hilfreich?

Lösung

Wenn diese URL in der gleichen Ansicht führen, ohne Abhängigkeit von Sitzung oder Cookies oder dem vorherigen Browserverlauf eines Client zurückgegeben, dann ja, es wird das sein, was Sie RESTful nennen.

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