Ein nettes Feature von ASP.NET MVC ist das TempData-Dictionary. Damit kann man Dinge wie zum Beispiel Statusmeldungen temporär speichern und einmal abrufen - danach sind sie automatisch gelöscht.
Sinnvoll ist das zum Beispiel für Formulare, bei denen etwas gespeichert wird, und wo dem Benutzer nach erfolgreicher Speicherung eine Meldung ausgegeben werden soll. Dafür hat man grundsätzlich seit jeher und mal unabhängig von ASP.NET MVC zwei Möglichkeiten:
Man gibt die Meldung nach ...
Wie ich vorletzte Woche schrieb, habe ich mir kurzentschlossen ein IBM/Lenovo Thinkpad T400 gekauft, welches nun mein knapp zwei Jahre altes Thinkpad T60 ablöst. Nachdem ich lange mit einem Macbook geliebäugelt hatte, entschied ich mich dann kurzerhand ob der objektiv unverkennbaren Vorteile für das Thinkpad, was ich sicher nicht bereuen werde.
Performance
Fangen wir mit der Geschwindigkeit an - Windows Vista fühlt sich merklich schneller darauf an, als auf meinem T60. Und das sowohl in der ...
UPDATE: Das funktioniert so leider nicht, Auflösung hier.
Das bekannte und (zu Recht) beliebte Repeater-Control funktioniert auch mit ASP.NET MVC, da es von sich aus ja nichts anderes macht, als beliebige Daten in Reihe zu rendern. Wozu also selbst die Schleife durchlaufen, wenn man auf so hübsche Helfer zurückgreifen kann, die ASP.NET ja auch so erfolgreich gemacht haben (und machen). Dazu werde ich in Kürze noch etwas posten, was dem einen oder anderen vielleicht das Thema Paging (Blättern) ...
Schöne Stolperfalle. Der Aufruf des HTML-Helpers "RenderPartial" über
1: = Html.RenderPartial("~/Views/Shared/xyz.ascx") %>
wirft die Exception
CS1502: Die beste Übereinstimmung für die überladene System.IO.TextWriter.Write(char)-Methode hat einige ungültige Argumente.
Kleine Ursache, große Wirkung - die Methode gibt keinen String sondern nix (void) zurück ... also einfach so aufrufen
1: Html.RenderPartial("~/Views/Shared/xyz.ascx"); %>
und alles ist gut :-).
...
Trotz schöner neuer URL-Welt gibt es Szenarien, in denen angehängte QueryStrings ganz nützlich sein können, um Parameter zu übergeben. Z.B. wenn man einen neuen Record erstellt und anschließend auf eine Übersicht weiterleiten und in dieser eine Nachricht anzeigen lassen will, dass der Eintrag erstellt wurde - dafür muss in der Übersicht natürlich bekannt sein, dass dem so ist.
MS hat dafür das RouteValueDictionary eingeführt, mit dem man beliebige Parameter an einen Redirect "anhängen" ...
Ich bin seit nun knapp 2 Jahren zufriedener Besitzer eines IBM/Lenovo Thinkpad T60. Das ist mein 6. Notebook, zum Vergleich: mein erstes habe ich mir 2003 gekauft, d.h. ich hatte in knapp 4 Jahren zuvor 5 verschiedene Geräte, das T60 hält sich nun allein schon 2 Jahre.
Grund ist einfach die fast perfekte Verarbeitung, die Stabilität und die Gewissheit innerhalb der 3 Jahre Garantie einfach keinem Risiko ausgesetzt zu sein, weil Support und Service von Lenovo bzw. den von IBM übernommenen ...
In der aktuellen Beta von ASP.NET MVC sieht das Standard-Projektlayout folgende Struktur vor:
/Controllers/HomeController.cs
/Views/Home/Index.aspx
/Views/Home/About.aspx
Das ist absolut übersichtlich und ausreichend für kleinere Websites, aber schon dann, wenn man seine Seite in zwei logische Bereiche unterteilen will und sich einzelne Elemente wiederholen, sollte das Ganze weiter verschachtelt werden können. Beispiel:
Es gibt einen allgemein gültigen Bereich für ...
Die Verwendung des 3-Schichtemodells (Datenzugriff, Geschäftslogik, Präsentation) ist eigentlich absolute Pflicht, aber ich weiß aus eigener Erfahrung, wie schwer es ist, sich darin einzuarbeiten und den Sprung zu schaffen, vor allem wenn man vorher lange den üblichen Microsoft-Tutorials gefolgt ist oder z.B. aus der prozeduralen Programmierung kommt (ASP, PHP usw.).
Robert hat sich dem Thema ja schon in verschiedenen Blogposts angenommen und kürzlich auch ein Video produziert - imho wirklich ...
Noch nicht Feature-Complete, die Basis ist aber wohl soweit vollendet, wie Scott schreibt. Ich bin ja immer noch kein richtiger Fan davon, aber der "Model Binder Support for Complex Types" ist schon sexy. Denn mit WebForms läuft das bisher immer auf mehr Schreibarbeit hinaus: Button -> Klick-Event -> nach Validierung Erstellung des komplexen Objektes und Zuweisung der einzelnen Eigenschaften:
Car car = new Car();
car.Name = TextBox1.Text;
Das automatische Binden kann hier wirklich ...
Bei den meisten Gadgets oder, ich drücke es anders aus, völlig überteuerten Geräten, die ich mir bisher gekauft habe, kam nach dem Kauf früher oder später die Einsicht, dass ich das Gerät eigentlich überhaupt nicht brauche. Die Reihe dieser Erlebnisse ist lang, spontan fällt mir das Macbook, der erste Eee-PC oder die Wii ein :-).
Nicht so beim iPhone, durch welches sich meine monatlichem Mobilfunk-Kosten glatt verzehnfacht haben. Warum ich mir da so sicher bin? Weil ich jetzt knapp 2 Wochen ...