Rails hat eine nette Redewendung, die es Ihnen einfach macht, eine ordnungsgemäß formatierte Daten (JSON, XML, nur die Daten) auf der Grundlage von einzelnen Aktion Methode zurückzugeben das Format, das von dem Client angegeben (oder auch aus der Anfrage abgeleitet. Es sieht ungefähr so aus ...Was ist der beste Weg, um die Rückgabe mehrerer Formate in ASP.NET MVC
respond_to do |format|
format.html #edit.html.erb
format.json {render :text=> <your json here>), :layout=> false}
format.xml ...
end
Was die bevorzugten Art und Weise ist dies in ASP.NET MVC zu tun? im Idealfall würde Ich mag die Framework, um auf die gleiche Weise wie Rails zu arbeiten (z. B. in der Lage sein, die ViewData richtig formatiert für das vom Client angegebene oder von der Anfrage selbst abgeleitete Format zurückzugeben)
Mit Rails können Sie auch Ansichten erstellen, die für jeden Typ spezifisch sind. Dadurch erhalten Sie die Möglichkeit, dieselben Daten im Wesentlichen an alle Ansichten zurückzugeben und sie korrekt formatieren zu lassen (also eine Ansicht, die xml erstellt, eine andere, die json erstellt) ein anderer, der HTML baut). Ist das mit ASP.NET MVC möglich? In der Tat scheint dieses Modell am besten mit dem Ziel zu bleiben, Bedenken imho zu trennen, da es den Controllern erlaubt, blickunabhängige Daten zurückzugeben, während die meisten Ansätze, die ich heute sehe (einschließlich der obigen Zeile "format.json ....: layout => false ") Führen Sie die JSON-Konvertierung innerhalb des Controllers durch und geben Sie diese Daten bei einer Anfrage für dieses Format direkt an den Client zurück.
Wie auch immer ... Vorschläge, Gedanken, Empfehlungen?
Dank
Das einzige Problem hier ist, dass es selten so einfach ist, nur Json (Ihr Modell) zurückzugeben.Normalerweise würde ich erwarten, dass Leute so etwas wie JQuery oder ExtJs in dem Client verwenden, der die JSON (oder XML) benötigt, um auf eine bestimmte Weise strukturiert zu sein. Also ... wo passiert diese Umstrukturierung? Wenn wir es in der Steuerung tun sollten ... wo/wie? Und wenn wir es dort tun ... verletzt das nicht die "Trennung von Sorgen"? Wenn wir es in der Ansicht tun ... wie modifizieren wir das Framework, um verständlich die richtige Ansicht basierend auf dem angeforderten Format auszuwählen? Danke. – wgpubs
Ich stimme zu, die meiste Zeit benötigen Sie ein separates Modell für die Arbeit mit JSON. Ich sehe nicht, warum die Trennung von Bedenken verletzt wird - der Controller ist bestrebt, dem Modell das Modell zur Verfügung zu stellen, das auch beinhaltet, herauszufinden, welches Modell sein sollte und welche Ansicht diesem Modell gegeben werden sollte. Für den Controller ist dies völlig relevant. Es wäre definitiv ein Verstoß, wenn die Ansicht die Arbeit des Controllers machen würde. Ich habe meine Probe bearbeitet, um den Modellaufbau anzuzeigen. – Sam
Ich denke, ich bin ein bisschen zerrissen, weil ja, der Controller sollte dafür verantwortlich sein, wie die Daten verpackt und an die Ansicht gesendet werden ... aber bedeutet das, dass es für solche verantwortlich sein sollte, wenn das bedeutet, die Daten in potenziell vielen Formaten basierend auf einem oder mehreren verwendeten clientseitigen Frameworks (zB ExtJs, Jquery, Mootools, etc ...)? Sie sehen, wir geben hier nicht nur eine Reihe von Daten zurück ... wir geben Daten für JQuery oder FOR ExtJs zurück. Das ist, wo die Trennung Sache ein bisschen mehr verdunkelt wird und auch Unit-Test-Controller ein bisschen haariger. – wgpubs