2016-03-30 26 views
1

Benimkine benzer sorular gördüm ama benim yaklaşımım biraz farklı ve C# ile bir araya getirmek için yeterince tanıdık değilim. Bir ASPX dönüşümü aşağıdaki kodu kullanıyorum: o bir dizeye dönüştürülemez çünkü alan boş olduğundaDönüştürme: 'System.DBNull' türünde nesne 'System.String' türüne yazılamıyor '

<%# !string.IsNullOrEmpty((string)Eval("XYZ")) ? "<tr>XYZ</tr>" : "" %> 

hata çıkageldi. Gerçek çekmeden önce bir dizeye dönüştürmeden boş bir değer olup olmadığını kontrol etmek için bunu nasıl yazarım? Kullandığım CMS'de bir önceki devrenin neden başka bir yaklaşım kullanmadığını açıklayan bir sınırlama olabilir, ancak önerilerinizi test edeceğim. Eğer veritabanındaki boş değerinden okudum söyleyen veritabanından okurken

+0

((string) Eval ("XYZ") '? o nedir? –

+0

Eval ("XYZ") == System.DBNull || string.IsNullOrEmpty ((string) Eval ("XYZ"))? "": " XYZ" – peinearydevelopment

+0

XYZ alan adıdır, (string) Eval, alanın değerini alan veritabanından alan ve onu bir dizeye dönüştürmeye çalışan bir işlevdir. Alan null olduğunda hatanın nereden geldiği yer burasıdır. –

cevap

3

Kullanım

<%# !string.IsNullOrEmpty(Convert.ToString(Eval("XYZ"))) ? "<tr>XYZ</tr>" : "" %> 

DBNull özel bir değerdir. Convert sınıfı zaten DBNull değerleriyle doğru şekilde ilgileniyor. Convert.ToString (DBNull değeri) boş bir dize döndürecektir.

+0

Bu işe yaradı, Çok takdir! CMS IntelliSense, Convert.ToString sınıfını ve metodunu tanımıyor ama beklendiği gibi çalışıyor. Btw, +1'e yetecek kadar harika değilim, bu yüzden eeet'i görüntüleyen herkes lütfen. –

İlgili konular