我有一个 .aspx 页面,其中有一个属性。现在我创建一个用户控件并将其放在页面上。现在我如何在用户控件后面的代码中访问该属性。
问问题
4732 次
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 回答