2010-03-22 26 views
11

CheckBox'ın atlanması gereken alan null. Bence üzerindeNeden CheckBoxFor çalışma zamanı hatası üretiyor

aşağıdaki hatayı alıyorum: Veritabanı tasarımını değiştirmek zorunda kalmadan

Cannot implicitly convert type 'bool?' to 'bool'

<%= Html.CheckBoxFor(model => model.Product.Exclusive) %> 

Bunu nasıl düzeltebilirim?

cevap

16

Özel, NULL değil, ifade değerlendirilirken ViewEngine için bir anlam ifade etmez. Onay kutusunu işaretlemeli veya işaretlememeli ve ayrıca bir true veya false değeriyle de yanıt vermelidir. Modelinizin bir bool değerine sahip olması gerekir, ancak bu, veritabanınızın bunu bilmesi anlamına gelmez. Veritabanı ve Model arasında bir yerde çeviri yapmak zorundasınız. Model.Exclusive = DAO.Exclusive ?? false.

Veri şemanızda null neyin temsil ettiğini veya model nesnelerini nasıl oluşturduğunuzu bilmeden, size bundan çok daha fazla ayrıntı vermek zordur.

Düzenleme: Bu test değil ama

public bool NoNullExclusive 
{ 
    get { return Exclusive ?? false; } 
    set { Exclusive = value; } 
} 

gibi basit bir paçayı ve seni önerdi özelliği yarattı

<%= Html.CheckBoxFor(model => model.Product.NoNullExclusive) %> 
+0

ile

<%= Html.CheckBoxFor(model => model.Product.Exclusive) %> 

değiştirilmesi olabilir kısmi bir sınıfta. Bu manipülasyonu yapmak için en iyi yer burası mı? – Picflight

+0

Ürün sınıfınız otomatik olarak oluşturulduysa, evet. Daha sonra ya sınıfın kendisinde ya da veri erişim nesnesinden modele eşlemede değil. – pdr

İlgili konular