2010-03-13 66 views
1

我有一個asp.net頁面代碼隱藏類的定義如下:鑄造特定的asp.net頁面類型

public partial class examplepage : System.Web.UI.Page 

我想在頁面中設置的公共屬性,我可以來自其他類的參考。我的理解是,如果我投來examplepage那麼我應該能夠得到的公共財產特定於示例頁面,如:

string test=((examplepage)HttpContext.Current.Handler).propertyX; 

然而,當我嘗試鑄造如上編譯器無法識別examplepage。誰能告訴我如何施放?我沒有定義特定的名稱空間。

感謝

+0

請提供編譯器錯誤的全文。 – wRAR 2010-03-13 10:43:58

+0

您是否在頁面存在的同一個程序集中進行了鑄造? – rmac 2010-03-13 11:27:51

+0

@wRAR:錯誤無法找到類型或命名空間名稱'examplepage'(您是否缺少using指令或程序集引用?) – DEH 2010-03-13 11:31:14

回答

2

如果任何人的興趣以下是我切換到:

public partial class examplepage : System.Web.UI.Page, ISomeStuff 

string test = ((ISomeStuff)HttpContext.Current.Handler).propertyX; 

感謝您的意見鄉親

+0

當然是的,使用一個接口。很簡單! – Radderz 2015-09-03 14:48:47

+0

這工作。但它可以更簡單。 – 2016-03-23 12:52:12

+0

...這起作用。但它可以更簡單: 訪問usercontrol的值(嵌套在頁面中的任何級別)。 在頁面上,我在Info.aspx頁面的代碼隱藏名爲PersonID的代碼隱藏中公開了HiddenField控件hdnPersonID,其中包含一個public(get,set)屬性(Protected does not work)。 在用戶控件中,我可以像這樣訪問頁面值: 2行:(獲取頁面引用,然後訪問公共屬性) NameSpace.Info infoPage =(NameSpace.Info)this.Page; string personID = infoPage.PersonID; 因此,PersonID在頁面級別保持不變。 – 2016-03-23 14:19:45

0

如果你的類是在不同的命名空間,你必須指定的命名空間爲您的網頁:

string test = ((MyWebApp.examplepage)HttpContext.Current.Handler).propertyX; 
+0

雖然我沒有任何名稱空間定義。所有相關的代碼根本沒有名稱空間聲明。我嘗試添加一個,但它似乎沒有幫助,所以我刪除它。 – DEH 2010-03-13 10:53:43

+0

@DEH:可能有一個隱式的命名空間。檢查Web項目的屬性以查看是否存在defualt名稱空間。您還可以檢查是否有包含網頁的ASP名稱空間。 – Guffa 2010-03-13 11:11:35

+0

謝謝 - 請參閱我的答案偏分類。任何想法如何刪除部分關鍵字? – DEH 2010-03-13 11:22:30

0

我剛讀了ASP.NET 2.0不支持鑄造在部分類上,因爲在編譯時該類「不存在」。

假設這是真的,我想從類定義中刪除「partial」關鍵字。編譯器不會讓我這樣做,說明另一個部分定義存在於其他地方。這是設計師嗎?任何人都知道我可以如何避免部分班級,所以我可以按照自己的想法進行施展

+0

但編譯時存在部分類......我不認爲試圖刪除「部分」會幫助你解決你的問題。 – rmac 2010-03-13 11:26:44

+0

ASP.NET使用部分類將設計器定義放入單獨的文件中。聲明你不能投部分類是不正確的,我只是試圖驗證,它工作得很好。你得到的錯誤是因爲你想要投射的類是未知的,這不是因爲投射不被允許。 – Guffa 2010-03-13 12:30:25