2009-07-22 66 views
6

如果我将控件放在.aspx文件中,更改ASP.NET控件的访问修饰符

<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; 

有什么方法可以改变访问修饰符吗?

回答

6

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

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

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

这仅适用于Web应用程序项目。对于网站没有设计师文件。在这种情况下,@ Steve_Cooper的答案将起作用。 public TextBox PublicTextBox {get {return this.MyTextBox; }} – Ozgur 2012-11-14 12:27:15

2

我考虑过的一个选择是编写一个公开的属性,显示原始页面;

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

这将完成工作,但似乎hacky。

1

史蒂夫,暴露出该页面的控制才有意义,如果你需要操纵这些控件,但在你的情况下,你只需要一些数据(该字符串)传递给其它的处理器,所以我会暴露而不是控制本身。