更改ASP.NET控件的Access Modifiers

时间:2009-07-22 13:39:10

标签: c# asp.net controls access-modifiers

如果我将控件放在像这样的.aspx文件中;

<asp:TextBox ID="protectedTextBox" runat="server">Some info</asp:TextBox>

我在页面的.aspx.designer.cs文件中获得了一个声明的控件;

protected global::System.Web.UI.WebControls.TextBox protectedTextBox;

但是我想将控件的访问修饰符更改为public。我可以设置任何属性或类似物来更改访问修饰符吗?

这是为什么我想要这样做。我试图让跨页回发工作很好,整洁。我有两页:

FirstPage.aspx
    MyTextBox : textbox
    MyButton  : button, @PostbackUrl=Secondpage

SecondPage.aspx
    MyLabel : label

当用户点击FirstPage.MyButton时,我想将FirstPage.MyTextBox.Text的值写入SecondPage.MyLabel.Text。我可以使用Page.FindControl来做到这一点,但这似乎是将上一页作为FirstPage对象进行转换并直接引用其上的MyTextBox控件的不良替代品。像这样的东西;

// on the page_load of SecondPage.aspx;
var previousPage = this.PreviousPage as FirstPage;
this.MyLabel.Text = previousPage.MyTextBox.Text;

有没有办法更改访问修饰符?

3 个答案:

答案 0 :(得分:6)

您可以从设计器中删除声明并将其放在您的代码中。

声明周围的评论说要做到这一点。

/// To modify move field declaration from designer file to code-behind file.

答案 1 :(得分:2)

我考虑过的一个选择是写一个暴露原始页面的公共财产;

public TextBox PublicTextBox { get { return this.MyTextBox; } }

哪个可以完成工作,但看起来很糟糕。

答案 2 :(得分:1)

史蒂夫,如果你需要操作那些控件那么暴露那个页面的控件是有意义的,但在你的情况下你只需要将一些数据(那个字符串)传递给另一个处理程序,所以我会暴露它而不是控制自己。