2015-08-14 104 views
0

我現在有用於設置ViewState的或期望的變量的會話代碼:爲通過變量和值設置ViewState/Session的通用方法?

if (ViewState["currentPage"] != null) 
     { 
      currentPage = Convert.ToInt32(ViewState["currentPage"].ToString()); 
     } 
     else 
     { 
      currentPage = 0; 
      ViewState["currentPage"] = currentPage.ToString(); 
     } 

當前頁字段是全局與代碼隱藏的零默認值(公衆詮釋當前頁= 0),因此,其初始值是零每當頁面加載。所以我寫了這幾行來保存它的最後價值。只要提到,CodeBehind中currentPage值被更改的地方,我添加了 「ViewState [」currentPage「] = currentPage.ToString();」在之後。

我想要的是具有兩個參數,變量和值的通用函數,用於根據上面的代碼設置ViewState。因此,如果有必要,我可以調用方法,像這樣的:setViewState(currentPage,0)

回答

0

是否需要你有變量作爲輸入參數 - 什麼是錯誤的簡單創建一個類中的函數在你的應用程序的某個地方傳遞值然後返回創建的值?即

public int setViewState(int value) { 
    //return and set value here? 
} 

因此將使用像currentValue = setViewState(50);

+0

但是,如果將來需要調用此函數並設置另一個字段的ViewState,而不是確切地說是「currentPage」呢?你的方法只適用於一個領域,但我想要的是通用方法,所以它應該有一個參數,它會引用所需的字段。 – frnfla

0

我認爲你將會遇到的一個全局函數的困難在於ViewState對頁面是本地的。

幾件事情,可以幫助你,但:

  1. 別忘了ViewState的是一個對象,所以你不必做的ToString
  2. 你可以把在必要的代碼物業這樣的:

    public int? TestInt { 
        get { return ViewState["TestInt"] as int?; } 
        set { ViewState["TestInt"] = value; } 
    } 
    

我喜歡這種方法,因爲它很明顯是什麼代碼是幹什麼的,particuarly我儘量減少儘可能使用ViewState。

+0

1)由於我在編程方面很新穎,不知道爲什麼我不必在對象上做ToString。你能用幾句話解釋嗎? 2)什麼意思是「?」在int附近簽名?對我而言,代碼在做什麼並不明顯:) – frnfla

+0

int?與System.Nullable 相同,只是表示該變量可以包含null。作爲int?意味着如果ViewState [「TestInt」]沒有設置,則它將爲空,並返回null。如果不使用可空,你需要多一點代碼來避免錯誤(也許會返回零而不是null)。關於數據類型和ToString等,C#編譯器非常善於幫助您。我會推薦Resharper(或等待VS2015),因爲這會告訴你什麼時候不需要使用ToString()之類的東西。 –