【发布时间】:2012-05-10 16:00:15
【问题描述】:
这似乎是一个基本问题,但它让我很难过。
我有一个在 page_load 上加载自定义控件 (.ascx) 的主页。
此自定义控件有两个字段。其中一个是下拉列表,另一个是文本框。当下拉列表更改值时,它会触发回发,一些逻辑在服务器端执行,并为文本框生成一个值。我逐步完成了代码,并正确创建并分配了值。但是,在呈现页面时,该值不会改变。
如果我将文本框的值更改为“QQQ”并触发回发,“QQQ”会留在文本框中,因此我可以验证视图状态是否正常工作。
是否有任何原因导致回发时生成的值没有显示在表单中。此过程在初始页面加载时运行良好。
.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
string ascxPath = @"~/_CONTROLTEMPLATES/TRC_BITS.ascx";
TRC_BITS control = Page.LoadControl(ascxPath) as TRC_BITS;
phForm.Controls.Add(control);
}
.ascx
<asp:TextBox ID="message" runat="server" TextMode="MultiLine" /><br/>
<asp:DropDownList ID="year" runat="server" AutoPostBack="true">
<asp:ListItem Text="2011">2011</asp:ListItem>
<asp:ListItem Text="2012">2012</asp:ListItem>
<asp:ListItem Text="2013">2013</asp:ListItem>
</asp:DropDownList>
.ascx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
year.SelectedValue = DateTime.Now.Year.ToString();
}
if (year.SelectedValue == 2012)
message.Text = "ABC";
else
message.Text = "XYZ";
}
【问题讨论】:
标签: asp.net