2

我有一个具有一个属性和大约 6 个公共方法的类(没有什么是静态/共享的)。

我的 aspx 页面将 Class 属性设置为某个值,一旦设置了值,我就可以访问 aspxPage 中的类方法,现在这很好。我的 aspx 页面中有 3 个 web 用户控件,我需要访问这些 web 用户控件中的一些类方法,我真的不想在每个用户控件中创建类的新实例。

例如 url 的类别代码为 25,当 25 传递给 Class 时,Class 有不同的方法来创建面包屑、SEO 友好的 URL 等......并且不同的用户控件与页面正在执行不同的任务,例如 Example Class.CreateMenu、Class。页面标题等

那么,我可以在我的 aspx 页面中建立课程并让我的网络用户控件访问其成员的最佳方式是什么。

4

3 回答 3

2

您必须在Page_InitPage_Load方法中实例化类并将其保存到SessionViewState以便 引用可用于user controls.

Session["myObj"]=new MyClass();

并读取bounded对象,

if(Session["myObj"]!=null){
 MyClass obj=Session["myObj"] as MyClass;
 if(obj!=null){

 }
}

或者将公共属性/方法添加到每个用户控件。

public MyClass Data {get;set;}
protected void Page_Load(object sender, EventArgs e)
{
 if(Data!=null)
  Label1.Text = Data.Foo;
}

并从页面事件处理程序 (Page_Load) 中分配对象引用

MyClass obj=new MyClass();
UserControl1.Data=obj;
UserControl2.Data=obj;
于 2012-09-20T03:14:13.153 回答
0

In webusercontroll globally declare below

public int varriable1{ get; set; }

public int varriable2{ get; set; }

In webusercontroll accessing variable1 and variable2 into variable 1 and 2 respectively

int a=variable1;
int b=variable2;

In yourpage.aspx passing variable into your webusercontroll

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        PostComments_global1.varriable1= 6; //PostComments_global1 is your webuseruser controll id
        PostComments_global1.varriable2= 6;
    }
}
于 2012-11-10T07:38:42.273 回答
0

我会处理 - 如果可能的话 - 在你的 .ascx 用户控件中编写处理类的方法,然后调用该方法,将类从 aspx 页面传递给方法。

控件首先呈现,然后在 aspx page 中实际设置类之前,因此您唯一的其他选择是将类变量另存为会话或 cookie 或隐藏字段,正如其他答案所建议的那样。

在 aspx 中,创建用户控件的新实例

   <asp:PaymentInformation ID="PaymentInformation1" runat="server" />

在 aspx 代码后面 - 在 ascx 中调用 TypeofEvent

   PaymentInformation1.TypeofEvent(PassClass)
于 2012-09-20T03:15:40.960 回答