Buon giorno a tutti.
Volevo postare la soluzione di un problema molto diffuso in rete per il quale, ad oggi, nessuno ha ancora dato una risposta.
Immaginate di avere un campo nel vostro DB definito come
Questo campo può avere 3 valori: true, false e null.codice:emailEnabled bit NULL
Di conseguenza, se posto in un modello, all'interno della View il comando:
restituisce un errore relativo al fatto che non si può castare un bool? in bool.codice:<%: Html.CheckBoxFor(model => model.emailEnabled)%>
La soluzione più veloce è quella di cambiare il campo nel db e renderlo NOT NULL, ma quando questo non si può fare...
SOLUZIONE:
Aggiungere una proprietà di tipo bool al modello che "aggiusti" emailEnabled in modo che non sia mai null ed usare questa.
e la chiamata alla checkbox nella View diventa:codice:[MetadataType(typeof(ModelloMD))] public partial class Modello { [DisplayName("E-Mail abilitata")] public bool enableMail { // campo aggiunto da me get { return flgEmailEnabled ?? false; } // se null restituisce false set { emailEnabled = value; } // setta true o false il valore di emailEnabled } private class ModelloMD // Buddy Class { [DisplayName("E-Mail abilitata")] // campo del db public bool? emailEnabled { get; set; } } }
Spero che l'esempio sia chiaro.codice:<%: Html.CheckBoxFor(model => model.enableMail)%>
Buona programmazione a tutti

Rispondi quotando
. La struttura che "simuli un booleano nullable" esiste ed è il tipo 'bool?'.
non ho letto MVC2, me ne scuso 