2011-03-09 74 views

回答

2

如果該函數不是靜態的,則需要先獲取包含此函數的類的實例,然後調用此實例上的函數。例如:

<% 
    // obtain an instance of the type containing the function 
    Foo instance = new Foo(); 
    // invoke the function on this instance 
    string result = instance.Bar(); 
%> 

很顯然,在代碼背後執行此操作會更好,而不是污染您的標記。

2

像.NET Framework中的其他公共函數 - 通過對象引用。但有時Visual Studio不會自動查看您的用戶控件的公共成員。如果IntelliSense窗口不顯示給您,請嘗試重建您的用戶控件和網站。

1

你從哪裏調用函數?包含頁面?母版?家長控制?控制本身?無論如何,您需要以某種方式獲取對控件實例的引用(除非方法是靜態的)才能調用此方法。並且引用的類型必須與定義該方法的類的類型相匹配。

編輯:

MyControl myControl = (MyControl)Page.FindControl("Id_Of_The_Control"); 
if (myControl != null) 
{ 
    myControl.TheMethod(); 
} 
+0

即時通訊嘗試從.aspx文件調用它 – hhh 2011-03-09 23:28:43

+0

用戶控件是在頁面上嗎?它是否在像DataGrid或嚮導之類的模板化控件中?如果它只是在頁面上,那麼你可以使用FindControl。看到我更新的答案。 – mikesigs 2011-03-09 23:31:08

+0

不知道是否通過「從.aspx文件」你的意思是代碼後面或以某種方式在標記?您可以訪問標記中的公共屬性,即。但我敢肯定你不能用一種方法來做到這一點,不知道爲什麼你會想。 – mikesigs 2011-03-10 01:00:46

1

,如果你不想添加ascx控件到一個佔位符編程,只需要實現IAttributeAccessorIUserControlDesignerAccessor接口,您的用戶控件類等;

public partial class yourascxclassname: System.Web.UI.UserControl, IAttributeAccessor, IUserControlDesignerAccessor 

您只能訪問您的ascx控件的公共成員。