Domanda

Ho teso a evitare di aggiungere proprietà alle mie pagine ASP.NET. Non mi è mai sembrata un'ottima idea. Tuttavia, recentemente ho visto la pratica impiegata in alcune applicazioni di esempio. La mia avversione all'aggiunta di proprietà personalizzate a una pagina è stata ingiustificata o è un "dipende"? situazione?

È stato utile?

Soluzione

La cosa sulle proprietà che devi ricordare è che durano per l'intero ciclo di vita della pagina. Ciò li rende entrambi molto utili (impostare una proprietà all'inizio del ciclo di vita ed è ancora valido in seguito) e pericolosi (è facile accedere a una proprietà prima che sia impostata o non realizzare un'altra fase del ciclo di vita che l'ha modificata su di te).

Un'area in cui ho visto le proprietà utilizzate con grande efficacia è un buon modo sicuro per avvolgere la stringa di query e la sessione. Definisci le proprietà per ciascuna stringa di query o valori di sessione previsti e diventa molto chiaro agli sviluppatori futuri cosa è previsto e disponibile.

Un altro uso comune è avvolgere gli oggetti ViewState. Mi aspetto che sia qui che li vedi nei campioni, poiché la maggior parte dei campioni tende a supporre che ViewState sia attivato.

Altri suggerimenti

Non vedo nulla di sbagliato nell'uso delle proprietà per ripulire il codice in una pagina laterale del server. Mi piace usare le proprietà per accedere alle informazioni sullo stato della sessione o Visualizza stato, in questo modo se modifico il modo in cui accedo ai dati, cambio solo un posto.

Asp.net non supporta l'iniezione basata sul costruttore. Questo è uno scenario chiaro in cui si desidera utilizzare le proprietà di asp.net (in quanto è possibile utilizzare l'iniezione basata sulle proprietà).

Aggiornamento 1: ecco uno scenario simile ma per i controlli - Come utilizzare Iniezione dipendenze con i moduli Web ASP.NET

Aggiornamento 2: è possibile utilizzarli per avvolgere viewstate o eseguire query sulla stringa. Vorrei esaminarlo attentamente, poiché non vuoi abusare del codice dietro. Se vedi che stai usando una delle proprietà di wrapping sul codebehind molte volte, probabilmente c'è troppo codice nel codebehind. Guardandolo in questo modo, ha l'effetto collaterale di evitare ripetute operazioni di casting / analisi che possono essere associate a quelle proprietà.

Non c'è nulla di sbagliato nelle proprietà di una pagina. Potrebbero apparire strani dato che una pagina viene raramente manipolata come oggetto da un codice esterno ma può essere fatta. Detto questo, la maggior parte delle proprietà di una pagina può essere contrassegnata come privata. Come tutte le cose, ci sono eccezioni.

Uno dei più grandi usi che ho per le proprietà sulla mia pagina è quando si racchiude un valore ViewState:

protected string TaskName
{
    get { return (string)ViewState["TaskName"] ?? string.Empty; }
    set { ViewState["TaskName"] = value; }
}

In questo caso, ho contrassegnato la proprietà come "protetta". che mi consente di accedervi dal mio markup.

Perché sarebbe male? Le proprietà sono in realtà solo metodi e sono sicuro che aggiungi sempre metodi alla pagina.

Uso le proprietà sulle mie pagine asp.net per accedere a Session, Viewstate e querystring. Ti fa solo scrivere meno codice e aumenta la leggibilità

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