6

如果我将控件放在这样的 .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;

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

4

3 回答 3

6

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

声明周围的评论说要这样做。

/// To modify move field declaration from designer file to code-behind file.
于 2009-07-22T13:45:52.127 回答
2

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

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

这可以完成工作,但看起来很老套。

于 2009-07-22T13:40:32.807 回答
1

史蒂夫,如果您需要操作这些控件,则公开该页面的控件是有意义的,但在您的情况下,您只需将一些数据(该字符串)传递给另一个处理程序,所以我会公开它而不是控件本身。

于 2009-07-22T13:46:18.897 回答