2008-12-03 54 views
0

大家;我在asp.net有這個問題,我有一個頁面,我插入和修改數據,在保存之前,我做了一個驗證,如果它通過我保存數據,但如果沒有,我會引發異常並顯示它,功能就像這樣;asp.net中的煩人異常

protected void btnSave_Click(object sender, EventArgs e) 
{ 
try 
{ 
... 
if(ValidData()) 
    //Save 
    ... 
else 
    throw new Exception("Invalid data"); 
} 
catch(Exception ex) 
{ 
    // Javascript alert 
    JSLiteral.Text = Utilities.JSAlert(ex.Message); 
} 
} 

的問題是,我提出後的異常,並固定在頁面中的數據我再次點擊保存按鈕,並將其保存,但它再次表明我的異常消息和煩人了。即使數據已保存,我再次單擊並再次顯示來自異常的消息。

你知道這個問題的答案嗎?

+0

什麼是JSLiteral? – JoshBerke 2008-12-03 18:33:59

回答

1

如果JSLiteral是服務器端控件並且它使用視圖狀態。然後,當保存成功時,您需要清除控件的狀態。

您可以禁用控件的視圖狀態,如JSLiteral.EnableViewState = false;

0

消息是否保存在文字的視圖狀態中?

如果數據有效,則將文字文本顯式設置爲空。

1

您保存後是否將JSLiteral的值重置爲空?

1

關閉JSLiteral控件的viewstate。

0

我最初的猜測是ViewState會記住錯誤信息。嘗試在JSLiteral控件上禁用ViewState。

0

投擲&在相同的函數中捕獲異常基本上是毫無意義的(異常是打算跨越通話級別)。如果你將它寫成:

if(ValidData()) 
{ 
    //Save 
} 
else 
{ // Javascript alert 
    JSLiteral.Text = Utilities.JSAlert(ex.Message); 
} 
+0

這是真的,但要解決這個問題,您還需要一個JSLiteral.Text =「」。 – nickd 2008-12-03 19:00:03