2015-05-26 28 views
0

發送參數的函數Master.cs在Master.cs如何從內容頁

public string sortOrder 
{ 
    get 
    { 
     if (ViewState["sortOrder"].ToString() == "Desc") 
     { 
      ViewState["sortOrder"] = "Asc"; 
     } 
     else 
     { 
      ViewState["sortOrder"] = "Desc"; 
     } 

     return ViewState["sortOrder"].ToString(); 
    } 
    set 
    { 
     ViewState["sortOrder"] = value; 
    } 
} 

我從內容頁面調用它:

ViewState["sortOrder"] = "Asc"; 
PD (e.SortExpression, Master.sortOrder, false); 

當執行功能,我得到下面的錯誤在這條線

如果(的ViewState [ 「中將sortOrder」]的ToString()== 「商品說明」):對象引用 未設置爲對象的實例。

sortOrder功能正常工作時,它也在內容頁面。我正在嘗試將所有可重複使用的代碼移動到Master.cs文件中。

如何修改該功能,使其與內容頁面中的功能相同。

+1

相關:[什麼是'NullReferenceException'和我該如何解決它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i -fix-it) –

+0

它是否爲空,因爲它位於單獨的代碼隱藏文件中?主頁面和內容頁面之間沒有'ViewState'交換? – SearchForKnowledge

+0

爲什麼你想發送參數到母版頁? –

回答

1

嘗試使用這一個。

public string sortOrder 
{ 
     get 
     { 
      if (!string.IsNullOrEmpty(Convert.ToString(ViewState["sortOrder"])) && Convert.ToString(ViewState["sortOrder"]) == "Desc") 
      { 
       ViewState["sortOrder"] = "Asc"; 
      } 
      else 
      { 
       ViewState["sortOrder"] = "Desc"; 
      } 

      return Convert.ToString(ViewState["sortOrder"]); 
     } 
     set 
     { 
      ViewState["sortOrder"] = value; 
     } 
} 
+0

如果不先將其轉換爲「字符串」,則無法執行此操作。 :/不能比較'ViewState'和一個字符串。 – SearchForKnowledge

+0

看到我編輯的答案 –

+0

這實際上做了訣竅:)謝謝。 – SearchForKnowledge

2

主窗口的ViewState和內容頁面不一樣。在您的內容頁面上,您只是修改了內容頁面的ViewState,因此您的母版頁獲得了空引用。

要堅持主頁和內容頁之間的數據,你有幾種選擇:

  • 如果數據需要在回發持續下去,那麼無論使用會話或者通過((MasterType)Page.Master).sortOrder上的內容引用的高手的ViewState後面的代碼
  • 否則,您可以使用Context.Items對象。
+0

'MasterType'是?我認爲這可能工作,除了我想知道'MasterType'是什麼。謝謝:) – SearchForKnowledge

+1

這是你的特定主頁面對象的類型。內容頁面的'Page.Master'屬性引用母版頁,但它是MasterPage類型的,它不包含您的自定義屬性。您必須將主屬性轉換爲特定母版頁的類型,或者在內容頁面上設置MasterType(https://msdn.microsoft.com/zh-cn/library/vstudio/ms228274%28v=vs.100 %29.aspx) –

+0

我試過了,'this.Master.sortOrder',但沒有奏效。我也試過這個:'((Site)Page.Master).sortOrder',我得到了同樣的結果。 – SearchForKnowledge