Wenn Sie sagen, dass Ihre Dropdown-Listen in verschiedenen Ansichten verwendet werden, betrachten Sie diese Dropdown-Listen immer noch als Teil der Ansicht, die sie darstellt? Wenn dem so ist, denke ich, dass die Verwendung eines benutzerdefinierten HTML-Helpers oder einer Teilansicht (ascx) angemessen ist. Dann können Sie, wie Sie vorschlagen, die Daten für die Dropdown-Listen mit einem gemeinsamen Dienst aus Ihrer Domänenebene füllen. Ich denke, das ist ein sehr vernünftiger Ansatz.
Wenn Sie jedoch der Meinung sind, dass die Dropdown-Listen etwas mit der Ansicht nicht zu tun haben, können Sie feststellen, dass die Verwendung von Html.RenderAction() ein wesentlich saubereres Ergebnis liefert. Mit Html.RenderAction() können Sie das Ergebnis einer Action-Methode direkt in eine andere Ansicht ausgeben. Daher können Sie einen Controller mit den erforderlichen Aktionsmethoden erstellen, um diese Dropdownlisten zu füllen. Nehmen wir zum Beispiel sagen, dass Sie mit grob etwas Blick haben wie:
<div>
<div id="coreView1">
<!-- some view code here -->
</div>
</div>
<div id="commonDropdowns">
<% Html.RenderAction("Create", "Dropdown"); %>
</div>
wo erstellen ist der Name Ihrer Methode in der Dropdowncontroller.
Zum Beispiel:
public class DropdownController : Controller
{
public ViewResult Create()
{
// do stuff here to create the ViewResult of the common Dropdowns
}
}
Hinweis: Manche Menschen mögen diesen Ansatz, da es nicht die typische MVC Trennung von Bedenken paßt. Es kann jedoch für einige Fälle sehr gut geeignet sein.
Hoffnung einer dieser Ansätze kann helfen.
Es sollte beachtet werden, dass Html.RenderAction nicht in ASP.NET MVC 1.0 enthalten ist. Es ist ein separates Add-On. http://eduncan911.com/blog/html-renderaction-for-asp-net-mvc-1-0.aspx Aber es wird mit ASP.NET MVC 2.0 Beta (endlich!) enthalten sein. – eduncan911
Danke eduncan, guter Punkt! Einige Informationen und Referenzen hier: http://davidhayden.com/blog/dave/archive/2009/04/04/ASPNETMVCPartialViewsHtmlRenderActionASPNETMVCFutures.aspx –
Vielen Dank für Ihre Antworten. Ich bin in MVC1. Ich muss es vielleicht auf MVC2 portieren und ausprobieren. Aber trotzdem, in MVC1, habe ich den Weg der Organisation von \ Model \ CommonQueries gewählt und verwende ihn in den Ansichten, in denen das Dropdown-Menü verwendet wird, und in der Ansicht, in der es gepflegt ist. Ich versuche nun, mit dem Webservice zu kaskadieren, aber das funktioniert nicht. Jetzt die Route von JSON gehen. Es macht Spaß Spaß. Danke noch einmal. –