Domanda

Sto sviluppando un'applicazione ASP.NET MVC in cui il contenuto di qualsiasi pagina può essere estratto dal database, se esistente, e visualizzato nella pagina.

Questo per consentire a persone non tecniche di modificare il contenuto senza dover accedere al codice sorgente (ad es.visualizzazioni) e cambiare le cose.

Il modo in cui lo faccio è che ogni controller deriva da un controller di base.Il controller di base esegue l'overload di "OnActionExecuted" e coglie l'occasione per estrarre qualsiasi contenuto assegnato all'azione/controller corrente.

Se l'azione restituisce un ViewModel che deriva da "ContentViewModel", popola la proprietà "Text" di ViewModel con il testo del database.

E poi il testo viene reso dal View.

Riesci a vedere qualche punto debole in questo design?

Sarebbe meglio se, invece di avere un controller di base, avessi estensioni HtmlHelper per estrarre i contenuti, che chiamo dalla View?

Uno dei motivi per cui lo chiedo è che avere il mio controller di base sembra interferire con la chiamata di "Html.RenderAction", che sembra aspettarsi che il controller specificato erediti direttamente da "System.Web.Mvc.Controller".

È stato utile?

Soluzione

  1. Gli ActionFilters non devono essere utilizzati per estrarre il contenuto.

  2. I controller non dovrebbero essere utilizzati per estrarre il contenuto ma solo per inviare le richieste in arrivo applicando una logica semplice.

  3. Gli helper HTML non devono essere utilizzati per estrarre alcun contenuto.Hanno lo scopo di rendere gli elementi dell'interfaccia utente precompilati con i dati forniti.

applicazione in cui il contenuto di qualsiasi pagina può essere estratto dal database

Fondamentalmente è così che funziona la maggior parte delle applicazioni.

Questo per consentire a persone non tecniche di modificare il contenuto senza dover accedere al codice sorgente (ad es.visualizzazioni) e cambiare le cose.

Per consentire alle persone non tecniche di modificare i contenuti, dovrebbe essere disponibile un'interfaccia utente appropriata.Indipendentemente dalla tecnologia alla base del progetto, il personale non tecnico non dovrebbe mai modificare il codice.

Ti suggerisco di non fare nulla di strano ma di tenere le cose chiare.Implementa il livello aziendale che fornirà i dati ai modelli che verranno visualizzati dalla vista.Crea un'interfaccia utente per consentire ad altre persone di modificare il contenuto.

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