Qualunque motivo valido per Nest Pagine Master in ASP.Net piuttosto che Eredita?

4

Attualmente in un dibattito sul lavoro e non riesco a capire perché qualcuno volesse evitare intenzionalmente l'ereditarietà con le pagine master.

Per riferimento qui è la configurazione del progetto:

  • BaseProject
    • MainMasterPage
      • SomeEvent
  • SiteProject
    • SiteMasterPage
      • nested MainMasterPage
  • OtherSiteProject
    • MainMasterPage (from BaseProject)

Il dibattito è sorto perché alcuni codici in BaseProject devono essere informati su "SomeEvent". Con l'impostazione precedente, il codice in BaseProject deve chiamare this.Master.Master . Lo stesso codice in BaseProject si applica anche ad OtherSiteProject a cui si accede appena come this.Master .

SiteMasterPage non ha differenze di codice, solo differenze HTML.
Se SiteMasterPage eredita MainMasterPage anziché Nested, allora tutto il codice è valido come this.Master .

Qualcuno può pensare a un motivo per cui usare qui una Pagina Master annidata invece di una Ereditata?

    
posta James P. Wright 27.03.2012 - 20:00
fonte

1 risposta

3

Non ci sono.

Innanzitutto, ti consigliamo di utilizzare il pattern di progettazione MVP per webforms. Separare la logica che manipola la vista dalla logica che manipola il modello di dati (View Logic, Business Logic). Metti tutta la tua logica in classi invece che nel code-behind. Inoltre, decidi quale è la soluzione migliore per te: Visualizzazione passiva o controller di supervisione .

SiteMasterPage has no code differences, only HTML differences.

Estrai tutta la logica in una classe separata: [Descrizione] MasterPage come class DefaultMasterPage . Ogni MasterPage erediterà questa classe. In questo modo non stai duplicando il codice. Le uniche differenze saranno con l'html in MasterPages.

Se la logica inizia a divergere ora hai l'opzione di ereditare e sostituire la funzionalità (ancora in classi separate, non nel code-behind).

    
risposta data 30.03.2012 - 22:13
fonte

Leggi altre domande sui tag