2013-03-21 79 views
0

我在數據庫中有一個位域,我想在我的HTML視圖上顯示爲「是」或「否」 如何使用三元(?:)運算符執行此操作?強類型HTML視圖中的三元運算符

這是我的,但它顯示所有記錄「否」。

<%= Html.Encode(Convert.ToString(item.IsValid) == "True" ? "Yes" : "No")%> 
+1

進行比較什麼類型是'item.IsValid'? – Lloyd 2013-03-21 17:40:48

+2

如果'item.IsValid'已經是一個布爾值,則不應該將其轉換爲字符串。 – jmoerdyk 2013-03-21 17:42:06

+1

爲什麼你的html編碼一個永遠不可能有值需要編碼的值? – 2013-03-21 17:44:53

回答

3

有兩種方法可以解決這個問題。

1)似乎的IsValid如何已經是一個布爾值,只取值

<%= item.IsValid ? "Yes" : "No"%> 

2)如果硬要將其轉換,使用等於與StringComparison.InvariantCultureIgnoreCase標誌

<%= Convert.ToString(item.IsValid).Equals("True", StringComparison.InvariantCultureIgnoreCase) ? "Yes" : "No"%> 
+0

獲取錯誤:CS0029:無法使用第一種方法將類型'字符串'隱式轉換爲'bool' 。並且錯誤:System.NullReferenceException:對象引用未設置爲對象的實例。 與你的第二種方法 – user793468 2013-03-21 17:52:36

+0

你確認IsValid有價值嗎?模型中的定義是什麼? – 2013-03-21 17:56:39

+0

我的錯誤,檢查錯誤的表的價值。有效!謝謝 – user793468 2013-03-21 17:59:03

1

爲什麼要轉換爲字符串?這應該只是工作假設IsValid是一個布爾值:

<%= Html.Encode(item.IsValid) == true ? "Yes" : "No")%> 

如果這是你想要的東西喜歡的字符串:

<%= Html.Encode(item.IsValid.ToLower() == "true" ? "Yes" : "No")%> 
2

或者更簡單 -

<%= Html.Encode(item.IsValid ? "Yes" : "No") %> 
+0

獲取錯誤:CS0029:不能隱式地將類型'字符串'轉換爲'布爾' – user793468 2013-03-21 17:54:54

+0

顯然,您的item.IsValid是字符串;不bool!如果它是布爾,電腦不會抱怨,因爲它不需要轉換! – Felix 2013-03-21 23:25:07

2

通常情況下,你可以使用如下:

<%: item.IsValid ? "Yes" : "No" %> 

這將解決您的問題。

+0

對,不需要編碼,如果你知道字符串只是「是」或「否」 – Faust 2013-03-21 17:47:36

+0

獲取錯誤:CS0029:不能隱式地將類型'字符串'轉換爲'布爾' – user793468 2013-03-21 17:53:30

+0

也「無效」。 「=」does – user793468 2013-03-21 17:54:22