2011-08-28 110 views
0

我正在CSS項目並想自定義反饋標籤的字體顏色。我的項目建立在3層(DAL,BLL,普通頁面)。在BLL中,我捕獲異常,我猜這是我添加CSS樣式表引用的地方。不幸的是,我無法讓它工作,這就是它的樣子。Css反饋標籤紅色或綠色取決於結果

BLL

Public Function deleteCustByCustID(ByVal CustID As Integer) As Boolean 
    If dataCust.DeleteCust(Cust) Then 
     Throw New Exception("The customer was removed.") 
     Return True 
    Else 
     Throw New Exception("The customer wasn't removed. Please try again.") 
     Return False 
    End If 
End Function 

ASPX.vb頁

Try 
    bllCust.deleteCustByCustID(CustID) 
Catch ex As Exception 
    lblFeedback.Text = ex.Message 
End Try 

我都存儲在一個文件夾中的CSS我的CSS的網頁。我想分配字體顏色石灰成功和字體顏色紅色失敗。

任何幫助非常感謝!

回答

2

另一種選擇:如果您爲「反饋」區域的標記分配了一個ID值,並且您向該元素添加了runat="server",則可以訪問代碼隱藏文件中的CssClass屬性。

舉例來說:

標記

<div id="Feedback" runat="server"></div> 

代碼

Me.Feedback.CssClass="error" 

然後你可以使用在他的回答@rockerest表示的CSS規則。

編輯:

好了,我在你的代碼看了一遍,我看到一個很大的問題:你應該NEVER使用異常的控制程序流程的方法。這可能是錯誤#1。

從您的方法返回更有意義的結果的一種不太常見的方法是封裝結果對象。下面是一個簡單的例子:

Public Class Result 

    Public IsValid As Boolean 
    Public Message As String 

    Public Sub New(ByVal isValid As Boolean, ByVal message As String) 
     IsValid = isValid 
     Message = message 
    End Sub 

End Class 

你會修改當前的函數返回一個Result對象,而不是Boolean,並根據您的查詢結果分配Result對象的值:

Public Function deleteCustByCustID(ByVal CustID As Integer) As Result 
    Dim result as New Result 

    If dataCust.DeleteCust(Cust) Then 
     result = new Result(true, "The customer was removed.") 
    Else 
     result = new Result(false, "The customer wasn't removed. Please try again.") 
    EndIf 

    Return result 

End Function 

然後,無論採用何種代碼調用deleteCustByCustID方法,都將Message屬性分配給反饋區域的內容,CssClassIsValid狀態相匹配。

有意義嗎?

編輯2:

好吧,假設你的錯誤,有一個CSS類, 「.error」 和,呃,沒有錯誤, 「.success」 CSS類。那麼,讓我們假裝下面的代碼片段是一個事件處理程序或somesuchthing內:

Dim result As new Result = deleteCustByCustID(42) 

現在你已經有一個IsValid狀態值的Result對象(這將是true或false)和Message字符串值。下一步是將消息應用於反饋元素(我假設您使用ASP.NET Label控件)Text屬性,然後根據result.IsValid的值將正確的類分配給標籤的CssClass屬性:

myFeedbackLabel.Text = result.Message 
If result.IsValid Then 
    myFeedbackLabel.CssClass = "success" 
Else 
    myFeedbackLabel.CssClass = "error" 
EndIf 

HTH。

+0

有任何額外的幫助,因爲我不能得到它的工作。 – CustomX

+0

那麼我就可以做lblFeedback.CssClass = lblFeedback.CssClass +「」+結果,那應該有效嗎? – CustomX

+0

但是我在哪裏可以指定要使用的CSS類? – CustomX

1

最好的答案在這裏將是你的主要樣式表來定義,像這樣兩個類:

.okay{ 
    color: lime; 
} 

.error{ 
    color: red; 
} 

,然後簡單地設置您的BLL正確的變量:「好」爲您if聲明的第一部分,以及else部分的「錯誤」。在頁面中,只需使用該變量作爲消息的類定義的一部分:

Try 
    bllCust.deleteCustByCustID(CustID) 
Catch ex As Exception 
    lblFeedback.Text = ex.Message 
    lblFeedback.cssClass = lblFeedback.cssClass + " " + [THE VARIABLE WORD HERE] 
End Try 

這應該做你想要的。

+0

但我返回一個布爾值? – CustomX

+0

關於如何返回變量的任何想法? – CustomX

相關問題