2010-01-10 65 views
4

我有一個CreateUserWizard控件並正在執行服務器端驗證。有沒有辦法強制CUW的錯誤信息從代碼隱藏中顯示?目前,如果用戶輸入重複名稱,則會顯示控件DuplicateUserNameErrorMessage屬性。但是,如果用戶關閉了JavaScript,或發送了一個自定義的POST標題,並帶有無效字符,我依靠服務器端驗證來捕獲錯誤。那麼我怎麼能在控件的ErrorMessage標籤中顯示相同的錯誤消息,而不是創建自定義標籤並僞造它?顯示CreateUserWizard的錯誤消息標籤

編輯:爲了澄清,服務器端驗證測試各方面。重複的用戶只是ErrorMessage標籤被控件調用時的一個例子。

感謝

回答

4

更新:

這裏是東西,將工作,但需要私人反思:

void CreateUserWizard1_CreatingUser(object sender, LoginCancelEventArgs e) { 
    typeof(CreateUserWizard).GetField(
     "_unknownErrorMessage", 
     System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) 
     .SetValue(sender, "My error message"); 
    e.Cancel = true; 
} 

基本上,你這個字段設置爲你想要的錯誤消息,並且的CreateUserWizard精選它起來。作爲私人反思,它不是一種「支持」技術,但至少可以考慮一個選擇,即使沒有其他方法可行。


我不認爲你應該做任何特別的工作。通常,支持客戶端驗證的任何內容都具有匹配的服務器端驗證邏輯。事實上,對於重名的東西,只有服務器端驗證,所以我不認爲關閉JavaScript應該會影響場景。

當你禁用JavaScript並且發佈重名時,你到底看到了什麼?是否可以通過簡單的頁面重現此問題,或者是否存在可能影響該問題的其他因素?

我嘗試了一個普通的CUW並禁用了JavaScript,並且重複的用戶錯誤被正確顯示。

+0

對不起,我想我應該更清楚一點。 Duplicate用戶只是顯示的ErrorMessage標籤的一個例子。我的服務器端驗證檢查無效字符,可疑腳本等。如果這些被標記,我想使用相同的ErrorMessage標籤來顯示一條消息。我已經能夠訪問CUW中的ErrorMessage標籤,但我無法強制它從代碼隱藏中顯示。 – keyboardP 2010-01-15 16:26:18

+0

你如何連接你的服務器端驗證?你使用自定義的驗證控件嗎? – 2010-01-15 18:31:54

+0

我正在捕捉(CUW的)* CreatingUser *事件並檢查每個正在提交的文本框。來自每個文本框的文本被放置在自定義驗證函數中,如果有任何可疑內容,則返回false。如果此函數返回false,那麼我希望CUW中的ErrorMessage標籤顯示自定義消息(並且我取消了CreatingUser事件)。 – keyboardP 2010-01-15 18:43:50