Est ASP.NET MVC 1 transfère compatible avec ASP.NET MVC 2?
-
18-09-2019 - |
Question
Puis-je exécuter un MVC 1 application à l'aide de la MVC 2 assemblées sans accroc?Je comprends que certains outils 3ème partie ont eu des trucs cassés dans MVC 2, mais supposons que je ne les utilise pas tous les autres outils.
La solution
Il y a eu dernières modifications.
Si vous voulez un 1.0 projet à exécution sur la 2.0, il n'a pas l'air de choses dans des endroits différents; si vous devez migrer l'application vers la 2.0..
Voici les modifications qui pourraient éventuellement se rompre (en cours de Prévisualisation 2):
Les changements dans l'Aperçu 2
Les aides maintenant retourner un MvcHtmlString
objet
Afin de prendre avantage de la nouvelle HTML de codage de syntaxe de l'expression dans ASP.NET 4, le type de retour de l'HTML helpers est maintenant MvcHtmlString
au lieu d'un string
.Notez que si vous utilisez ASP.NET MVC 2 et les nouvelles aides à ASP.NET 3.5, vous ne serez pas en mesure de prendre avantage de la version HTML de codage de syntaxe;la nouvelle syntaxe est disponible uniquement lorsque vous exécutez ASP.NET MVC 2 sur ASP.NET 4.
JsonResult
maintenant, ne répond qu'aux demandes HTTP POST
Afin d'atténuer JSON détournements qui ont le potentiel de communication de l'information, par défaut, l' JsonResult
classe maintenant répond uniquement à l'adresse HTTP POST
les demandes.AJAX REÇOIS des appels à l'action des méthodes qui renvoient une JsonResult
l'objet doit être modifié pour utiliser des POST à la place.Si nécessaire, vous pouvez remplacer ce comportement en définissant la nouvelle JsonRequestBehavior
propriété de JsonResult
.Pour plus d'informations sur le potentiel d'exploitation, de voir le post de blog JSON Détournement de Phil Haack blog.
Modèle et ModelType accesseurs de propriété sur ModelBindingContext
sont obsolètes
Une nouvelle réglable ModelMetadata
la propriété a été ajouté à la ModelBindingContext
classe.La nouvelle propriété encapsule à la fois le Modèle et le ModelType
les propriétés.Bien que l' Model
et ModelType
les propriétés sont obsolètes, pour la compatibilité descendante de la propriété des getters encore du travail;ils délèguent à l' ModelMetadata
propriété pour récupérer la valeur.
Les changements dans l'Aperçu 1
DefaultControllerFactory
changements de classe personnalisés de contrôleur des usines qui en découlent
Cette modification affecte personnalisé contrôleur des usines qui en découlent DefaultControllerFactory
.Le DefaultControllerFactory classe a été résolu par la suppression de la RequestContext
de la propriété et, au lieu de transmettre la demande instance de contexte pour les méthodes virtuelles protégées GetControllerInstance
et GetControllerType
.
Personnalisé contrôleur usines sont souvent utilisés pour fournir de l'injection de dépendances pour ASP.NET les applications MVC.
Pour mettre à jour la coutume contrôleur des usines à l'appui ASP.NET MVC 2, changer la signature de la méthode ou des signatures pour correspondre à la nouvelle signatures, et d'utiliser le contexte de la demande paramètre au lieu de la propriété.
“Zone” est désormais réservé route de la valeur de la clé
La chaîne “zone” en Route des valeurs a une signification spéciale dans ASP.NET MVC, de la même manière que “contrôleur” et “action” ne.L'une des conséquences est que si le HTML helpers sont fournis avec un itinéraire valeur dictionnaire contenant “zone”, les assistants de ne plus ajouter de la “zone” dans la chaîne de requête.
Si vous utilisez les Zones de fonctionnalité, assurez-vous de ne pas utiliser {area}
dans le cadre de votre parcours à l'URL.
Problèmes Connus
Ajouter Vue de la boîte de dialogue déclenche une exception NullReferenceException lorsque la Créer fortement typées vue case est cochée, une Vue de la sélection de Contenu autre que le “Vide” est sélectionné, et une Vue de données type de classe, le nom est spécifié pour un type qui n'existe pas.Lors de la spécification d'un nom de type, utilisez la liste déroulante pour sélectionner le nom du type ou d'un type entièrement qualifié du nom de type.Pour les types qui n'existent pas, vous devez définir Afficher le Contenu de “Vide”.
Autres conseils
Consultez ce document. Vous apprendrez au sujet des changements de rupture: http://go.microsoft.com/fwlink/?LinkID=157072
Un Gotcha qui m'a mordu est que tous les champs d'un modèle sont désormais toujours validés sur un poste.
Les changements est décrit par Brad Wilson ici .
poste de blog de Steve Anderson décrit le problème et ma solution préférée (à l'aide d'un validateur personnalisé).