0

我有一个 .aspx 页面,其中有一个属性。现在我创建一个用户控件并将其放在页面上。现在我如何在用户控件后面的代码中访问该属性。

4

2 回答 2

3

最好的方法是在 UserControl 中公开一个公共属性并从 ASPX 页面分配该属性:

通过代码:

var uc = this.myUserControl as MyCuserControlType;

uc.CustomUserControlProperty = this.MyPageProperty;

声明式地

<uc:MyUserControlType1 runat="server= ID="myUserControl" CustomUserControlProperty="<%# this.MyPageProperty %>" />

注意:如果你想使用声明性标记,你需要调用this.DataBind();代码来强制绑定

编辑 1

如果您想做相反的事情(将值从控件传递到页面以响应事件),您可以在用户控件中声明自己的自定义事件并在需要时触发它。

例子:

后面的用户控制代码*

public event Action<string> MyCustomEvent = delegate{};

....
// somewhere in your code
this.MyCustomEvent("some vlaue to pass to the page");

页面标记

<uc:MyUserControl1 runat="server" onMyCustomEvent="handleCustomEvent" />

后面的页面代码

public void handleCustomEvent(string value)
{
    // here on the page handle the value passed from the user control
    this.myLabel.Text = value;
    // which prints: "some vlaue to pass to the page"
}
于 2012-09-25T05:04:40.800 回答
2

如果用户控件需要访问父页面上的某些内容,那么该用户控件可能应该将其作为自己的属性包含在内,该属性可以从父页面设置。理想情况下,用户控件应该独立于页面上的任何父上下文或其他用户控件,否则它们实际上是不可重用的。它们需要在它们暴露的所有属性中是自包含和可配置的。

于 2012-09-25T05:03:22.927 回答