Attualmente sono circa due settimane e mezzo nella mia prima applicazione ASP.Net MVC, e finora mi piace.Mantenerlo ASCIUTTO in ASP.Net MVC
Questo progetto corrente è una porta di un progetto WebForms ASP.Net e sto cercando di mantenere le funzionalità. Tutto sta andando bene.
Tuttavia, mi ritrovo a ripetere ... me stesso.
Ad esempio, nella mia classe BaseController, nel mio BaseViewPage, nel mio BaseViewUserControl, e nel mio BaseViewMasterPage, ho il seguente codice:
protected LanLordzApplicationManager AppManager
{
get
{
if(Session["Application"] == null)
{
Session["Application"] = new LanLordzApplicationManager(Server.MapPath("~/"));
}
return (LanLordzApplicationManager)Session["Application"];
}
}
protected User CurrentUser
{
get
{
if (Session["UserID"] == null && this.Request.Cookies["AutoLogOnKey"] != null && !string.IsNullOrEmpty(this.Request.Cookies["AutoLogOnKey"].Value))
{
this.CurrentUser = this.AppManager.RecallUser(this.Request.Cookies["AutoLogOnKey"].Value, Request.UserHostAddress);
}
if (Session["UserID"] == null)
{
return null;
}
else
{
return this.AppManager.GetUserByUserID((long)Session["UserID"]);
}
}
set
{
Session["UserID"] = value.UserID;
}
}
Ora, questo è non codice bello. Vorrei sistemarlo un po ', ma al momento, lo aggiusto in quattro punti. È stata, infatti, la fonte di un paio di bug, il che significava ripararlo nuovamente in tutti e quattro i posti.
Come suggeriresti di mantenere questo sistema ASCIUTTO? Si noti che entrambi questi oggetti devono essere mantenuti nella sessione per più di un paio di motivi.
Suggerisco di spostare le stringhe magiche "UserID", "Applicazione", ecc. Alle costanti o utilizzare un wrapper oggetto fortemente tipizzato per l'oggetto di sessione. – Kane