Domanda

Posso eseguire un MVC 1 applicazione utilizzando i MVC 2 assemblee senza intoppi? Mi rendo conto che alcuni strumenti 3a parte hanno avuto roba rotto in MVC 2, ma supponiamo non sto usando quelli di altri strumenti.

È stato utile?

Soluzione

Ci sono stati cambiamenti rottura .

Se si desidera un progetto 1.0 per funzionare su 2.0, che fa cercare le cose in luoghi diversi; in modo che avrebbe dovuto migrare l'applicazione a 2,0. .

Ecco le modifiche che potrebbe 'break' (aggiornata al Preview 2):

Variazioni Preview 2

Helpers ora restituiscono un oggetto MvcHtmlString

Al fine di sfruttare la nuova sintassi espressione HTML-codifica ASP.NET 4, il tipo di ritorno degli helper HTML è ora MvcHtmlString invece di un string. Si noti che se si utilizza ASP.NET MVC 2 ei nuovi aiutanti con ASP.NET 3.5, non sarà in grado di approfittare della sintassi HTML-codifica; la nuova sintassi è disponibile solo quando si esegue ASP.NET MVC 2 su ASP.NET 4.

JsonResult ora risponde solo alle richieste HTTP POST

Al fine di mitigare gli attacchi dirottamento JSON che hanno il potenziale per la divulgazione di informazioni, per impostazione predefinita, la classe JsonResult ora risponde solo alle richieste HTTP POST. AJAX GET chiamate a metodi d'azione che restituiscono un oggetto JsonResult dovrebbe essere modificata per utilizzare POST invece. Se necessario, è possibile ignorare questo comportamento impostando la nuova proprietà JsonRequestBehavior di JsonResult. Per ulteriori informazioni sul potenziale exploit, vedi il post sul blog JSON dirottamento sul blog di Phil Haack.

modello e proprietà ModelType setter su ModelBindingContext sono obsoleti

Una nuova proprietà ModelMetadata impostabile è stato aggiunto alla classe ModelBindingContext. La nuova proprietà racchiude sia la proprietà ModelType modello e. Sebbene le proprietà Model e ModelType sono obsoleti, per compatibilità i getter di proprietà funzionano ancora; delegano alla proprietà ModelMetadata per recuperare il valore.

Variazioni Preview 1

cambiamenti di classe DefaultControllerFactory rompono le fabbriche del controller personalizzati che ne derivano

Questa modifica interessa le fabbriche del controller personalizzati che derivano da DefaultControllerFactory. La classe DefaultControllerFactory è stato fissato dal rimuovendo la proprietà RequestContext e invece passare l'istanza di richiesta contesto alla modalità protetta GetControllerInstance virtuale e GetControllerType.

fabbriche regolatore personalizzati vengono spesso utilizzati per fornire l'iniezione di dipendenza per applicazioni ASP.NET MVC.

Per aggiornare le fabbriche del controller personalizzato per supportare ASP.NET MVC 2, modificare la firma del metodo o firme per abbinare le nuove firme, e utilizzare il parametro di richiesta di contesto invece della proprietà.

“Area” è una una chiave ora riservata percorso-value

La stringa “area” nei valori del percorso ora ha un significato speciale in ASP.NET MVC, nello stesso modo in cui “controllore” e “azione” fanno. Una conseguenza è che se aiutanti HTML vengono forniti con un dizionario percorso valore contenente “area”, gli aiutanti non potranno più aggiungere “area” nella stringa di query.

Se si utilizzano le aree di funzionalità, assicurarsi di non utilizzare {area} come parte del tuo URL percorso.

Problemi noti

The View finestra di dialogo Aggiungi getta una NullReferenceException quando la casella di controllo vista fortemente tipizzato Crea è selezionata, una selezione View Content diverso da “Vuoto” è selezionato, e un nome tipo di classe View di dati è specificato per un tipo che fa esistere . Quando si specifica un nome di tipo, utilizzare l'elenco a discesa per selezionare il nome del tipo o digitare il nome di tipo completo. Per i tipi che non esistono, è necessario impostare View Content per “Empty”.

Altri suggerimenti

Dai un'occhiata a questo documento. Imparerete circa i cambiamenti di rottura: http://go.microsoft.com/fwlink/?LinkID=157072

Una Gotcha che mi ha morso è che tutti i campi di un modello sono ora sempre convalidati su un post.

I cambiamenti è descritto da Brad Wilson qui .

post sul blog di Steve Anderson descrive il problema e la mia soluzione preferita (usando un validatore personalizzato).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top