2009-02-12 9 views
30

È possibile che su un client sia stato creato un sito enorme con moduli Web ASP.NET. Il problema è che sto trovando i moduli Web ASP.NET in qualche modo non intuitivi (solo il mio gusto personale). Quindi quello che mi piacerebbe fare è usare MVC ma non posso davvero aspettarmi che il mio cliente paghi il mio tempo per una riscrittura completa (né ha il tempo).È possibile utilizzare ASP.NET MVC insieme a moduli Web ASP.NET regolari

Quindi, quello che sto chiedendo è: posso usare ASP.NET MVC e moduli Web allo stesso tempo e utilizzare gradualmente MVC sempre di più? Qualche consiglio?

risposta

16

Aggiornamento 2014:

Visual Studio 2013 ci avvicina a One ASP.NET. Non esiste più il tipo di progetto MVC o il modulo Web Form, c'è solo ASP.NET. Se vuoi mescolare Web Forms e Web API, o MVC e SignalR, procedi! Sei incoraggiato e supportato. Le nuove funzionalità e funzionalità sono introdotte con NuGet senza rompere le app esistenti.

VS 13

Così la miscelazione di Web Forms e MVC (che è stato praticamente lavorato senza soluzione di continuità) è ora incoraggiato ei confini sono offuscato. Suppongo che la MS abbia riconosciuto la necessità di consentire ai progetti di migrare lentamente in MVC, o semplicemente migrare le porzioni secondo necessità, e ottenere il meglio da entrambi i mondi.


MVC Progetto:

Dopo aver utilizzato MVC con moduli Web per un bel po 'di tempo è certamente possibile e una scelta eccellente. Nuove funzionalità e pagine possono essere facilmente aggiunte nelle pagine MVC con una buona progettazione architettonica come DDD (Service Repository, Dependency Injection ecc.) E le vecchie cose possono rimanere così come sono. La combinazione di MVC all'interno di una pagina Webform funziona anche bene, anche se ci possono essere alcuni problemi minori con la convalida JS. Lo consiglio vivamente.

È abbastanza facile iniziare con la creazione di un'applicazione MVC (5 atm) e quindi dopo aver ottenuto il modello di base attivo e in esecuzione, aggiungere le vecchie webform all'interno di una cartella. In questo modo si ottiene correttamente la nuova configurazione MVC e si mantiene la compatibilità all'indietro.

  • È possibile creare un progetto MVC e copiare semplicemente tutte le pagine Webforms in es. una cartella. (possibile anche solo aggiornare un progetto, immagino)
  • Instradamento di installazione per ignorare le richieste con quel particolare nomecomputer nell'URL. In questo modo MVC e webform possono essere utilizzati insieme senza problemi negli URL.
  • Asp.net WebForms aspx le pagine possono risiedere in MVC purché non siano posizionate nella cartella/Views.
  • Vai con Razor sulla vecchia sintassi, puoi personalizzare facilmente gli helper HTML ed è molto più pulito.
  • Verificare gli standard MVC e le convenzioni, il controller dovrebbe essere molto leggero. Non è il code-behind che può contenere tutta la logica di cui hai bisogno.
  • Visualizzazioni non devono contenere più di logica di presentazione (senza logica di business)
  • Tutto nuovo => MVC
  • Risorse, ecc web.config sono utilizzabili da entrambi i
  • menu non utilizzare i vecchi Sitemap in MVC

Utilizzando MVC all'interno di un webforms aspx pagina:

Il seguente testo intende dimostrare come utilizzare MVC all'interno di una pagina Webforms. (Ad esempio, all'interno di MyPage.aspx) È possibile utilizzare le azioni/viste MVC all'interno di webform con ad es. ajax per riempire una parte della pagina o alcune div.

Le forme Web contenenti MVC funzionano correttamente, almeno quando si aggiunge una chiamata ajax all'interno dell'HTML per riempire un div da MVC.

All'interno di un aspx

..html & webforms code 

<div id="fillMeFromMVC"> 
    <script type="text/javascript"> 
    $.ajax(... call an MVC action to fill 
     the "fillMeFromMVC" div that this script sits inside of); 
</script> 
</div> 

Questo riempirà una parte della pagina tramite MVC e si può fare il vostro modo pulito MVC senza preoccuparsi di ciò che è fatto in WebForms.

WebForms vs MVC:

A questo punto è probabile abbastanza consapevoli delle differenze tra le due tecnologie, ma qui è un po 'il confronto tra di loro. Entrambi hanno i loro scopi e usi. Personalmente preferisco MVC per le cose che ho bisogno di fare, tuttavia dipende probabilmente da ciò che stai cercando di ottenere.

Se si utilizza ad es. una SOA dietro di loro sia le pagine web che le pagine MVC possono utilizzare la stessa logica di business. Le forme Web possono essere dannose quando il codice è tutto nella pagina retrostante ed è collegato all'interfaccia utente (nessuna separazione di dubbi). Con una solida architettura e un po 'di sforzo che può essere ridotto.

Ulteriori approfondimenti:

Webforms vs. MVC (Code project)

Difference betweeen ASP.NET WebForms and ASP.NET MVC (a blog)

+0

penso che tu abbia sbagliato perché MVC 'RouteCollection' ha questa impostazione chiamato' RouteExistingFiles' che è 'false' di default. Ciò significa che se si accede a una pagina di aspx esistente (e non risiede nella cartella ** Views ** (web.config locale impedisce l'accesso diretto alla richiesta di file), deve essere gestito come un WebForm quotidiano. –

+0

Ok, Io non sono del tutto sicuro di questo punto, ho modificato il post. – lko

+0

@Iko: se sei sicuro, puoi testarlo, giusto? :) Ma non stavo parlando di incorporare i controlli server dei moduli Web nella vista MVC ... Stavo dicendo che le pagine web form possono risiedere all'interno delle applicazioni web MVC. Quindi ovviamente hai frainteso il mio commento perché quello che stavi facendo è stato mescolare la pagina WebForms con una vista parziale di Asp.net MVC. E questa è una cosa diversa che l'OP stava chiedendo. –

Problemi correlati