Es gab Änderungen zu brechen .
Wenn Sie möchten, dass ein 1.0-Projekt unter 2.0 ausgeführt wird, sucht es an verschiedenen Orten nach Dingen. Sie müssten also die Anwendung auf 2.0 migrieren. .
Hier sind die Änderungen, die möglicherweise "brechen" könnten (aktuell ab Vorschau 2):
Änderungen in Vorschau 2
MvcHtmlString
-Objekt Um die neue HTML-codierende Ausdruckssyntax in ASP.NET 4 zu nutzen, ist der Rückgabetyp der HTML-Helfer nun MvcHtmlString
anstelle von string
. Beachten Sie, dass Sie die HTML-Codierungssyntax nicht nutzen können, wenn Sie ASP.NET MVC 2 und die neuen Hilfsprogramme mit ASP.NET 3.5 verwenden. Die neue Syntax ist nur verfügbar, wenn Sie ASP.NET MVC 2 unter ASP.NET 4 ausführen.
JsonResult
reagiert jetzt nur auf HTTP POST-Anfragen Um JSON-Hijacking-Angriffe, die die Offenlegung von Informationen ermöglichen, zu minimieren, antwortet die JsonResult
-Klasse standardmäßig nur auf HTTP POST
-Anforderungen. AJAX-GET-Aufrufe an Aktionsmethoden, die ein JsonResult
-Objekt zurückgeben, sollten geändert werden, um stattdessen POST zu verwenden. Bei Bedarf können Sie dieses Verhalten überschreiben, indem Sie die neue Eigenschaft JsonRequestBehavior
von JsonResult
festlegen. Weitere Informationen über den potenziellen Exploit finden Sie im Blogbeitrag JSON Hijacking auf Phil Haacks Blog.
ModelBindingContext
sind veraltet Eine neue einstellbare Eigenschaft ModelMetadata
wurde zur Klasse ModelBindingContext
hinzugefügt. Die neue Eigenschaft enthält die Eigenschaften Model und ModelType
. Obwohl die Eigenschaften Model
und ModelType
veraltet sind, funktionieren die Eigenschaften-Getter aus Gründen der Abwärtskompatibilität immer noch. Sie delegieren an die Eigenschaft ModelMetadata
, um den Wert abzurufen.
Änderungen in Vorschau 1
DefaultControllerFactory
-Klasse ändert die benutzerdefinierten Controller-Factorys, die davon abgeleitet werden Diese Änderung betrifft benutzerdefinierte Controller-Factorys, die von DefaultControllerFactory
abgeleitet sind. Die DefaultControllerFactory-Klasse wurde behoben, indem die Eigenschaft RequestContext
entfernt und stattdessen die Anforderungskontextinstanz an die geschützten virtuellen Methoden GetControllerInstance
und GetControllerType
übergeben wurde.
Um die benutzerdefinierten Controllerfactorys zur Unterstützung von ASP.NET MVC 2 zu aktualisieren, ändern Sie die Methodensignatur oder -signaturen so, dass sie den neuen Signaturen entsprechen, und verwenden Sie anstelle der Eigenschaft den Anforderungskontextparameter.
Die Zeichenfolge "area" in Route-Werten hat jetzt in ASP.NET MVC eine besondere Bedeutung, genau wie "controller" und "action". Eine Implikation ist, dass, wenn HTML-Helfer mit einem Route-Value-Wörterbuch, das "Bereich" enthält, versorgt werden, die Helfer nicht mehr "Bereich" in die Anfrage-Zeichenkette einfügen werden.
Wenn Sie die Funktion "Bereiche" verwenden, vergewissern Sie sich, dass {area}
nicht als Teil Ihrer Routen-URL verwendet wird.
Bekannte Probleme
Das Dialogfeld Ansicht hinzufügen löst eine NullReferenceException aus, wenn das Kontrollkästchen Stark typisierte Ansicht erstellen aktiviert ist, eine andere Inhaltsauswahl als "Leer" ausgewählt ist und ein Name der Datenklassenklasse für einen vorhandenen Typ angegeben ist . Wenn Sie einen Typnamen angeben, verwenden Sie entweder die Dropdown-Liste, um den Typnamen auszuwählen, oder geben Sie den vollständig qualifizierten Typnamen ein. Für nicht vorhandene Typen müssen Sie Inhalt anzeigen auf "Leer" setzen.
Sehen Sie sich dieses Dokument an. Sie werden über die Veränderungen lernen: Ссылка
Ein Fehler, der mich gebissen hat ist, dass alle Felder eines Modells jetzt immer auf einem Post validiert sind.
Die Änderungen werden von Brad Wilson beschrieben hier .
Steve Anderson Blogpost beschreibt das Problem und meine Lieblingslösung (mit einem benutzerdefinierten Validator).
Tags und Links asp.net-mvc asp.net backwards-compatibility