2013-04-03 44 views
0

我有一個數據表單,它可以在按下按鈕時執行一些計算。一旦按下這個按鈕,一個靜態類的對象就被實例化了。該對象也在其他各種類中調用不同的方法。檢查外部類拋出的異常類

我設計這些類的方式是,如果發生任何錯誤,將處理異常,並且類方法將在asp:ValidationSummary中顯示錯誤消息。
現在,當從這個數據表單中,我嘗試保存我的值,即使validationSummary在窗體上顯示錯誤,無效值也會保存在數據庫中。

我可以在此外部類中創建一個名爲IsValid的靜態屬性,每次由該方法拋出異常時該靜態屬性都設置爲false,但由於這些方法由對象重複調用,因此此屬性將設置爲true if沒有任何異常拋出,從而導致旁路的IF條件。

有沒有辦法處理這種情況?

這是拋出異常的方法。此方法屬於ClsOmChallan類。 .dll文件被引用到我的項目中,沒有別的。

public static double getResultFromAstmTables(string TableName, double ObserveTemp, double ObserveGravity) 
    { 
     SqlConnection conn = new SqlConnection(clsConnection.ConnectionString); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.CommandType = System.Data.CommandType.Text; 
     cmd.Connection = conn; 
     cmd.CommandText = "select result from astm_tables where table_no = '" + TableName + "' and temperature = '" + ObserveTemp + "' and gravity = '" + ObserveGravity + "'"; 

     try 
     { 

      conn.Open(); 

      double result1; 
      result1 = Convert.ToDouble(cmd.ExecuteScalar()); 
      isValid = true; 
      return result1; 
     } 
     catch (Exception ex) 
     { 
      ValidationError.Display("clsAstmTables + getResultsFromAstmTables " + ex.Message.ToString()); 
      isValid = false; 
      return 0; 

     } 
     finally 
     { 
      if (conn.State == System.Data.ConnectionState.Open) conn.Close(); 
      cmd.Dispose(); 
     } 

    } 
+0

我不太理解你所做的。你能提供一些小代碼嗎? –

+0

@ImmortalBlue請檢查編輯 –

+0

你爲什麼試圖在靜態做到這一點?爲什麼不把它放在一個物體上? –

回答

0

您可以嘗試使用驗證器,它將在服務器端調用您的驗證方法。 Validator知道顯示驗證摘要和停止頁面處理。

此外,您還可以嘗試

public override void Validate() { 
      //put your logic here 
      // Now perform validation 

      base.Validate(); 
     } 

有關詳細信息,請查看this

+0

我已檢查鏈接。這不適用於我的情況。 –