【发布时间】:2015-06-29 05:25:02
【问题描述】:
我需要UpdatePanel 和asyncpostback,但在我的情况下,似乎没有发生部分回发,而是完全回发。我是网络表单的新手,请检查代码:
<%@ Register TagPrefix="Cust" TagName="CompanyInformationView" Src="~/CustomControls/CompanyInformationView.ascx" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="Server">
<asp:UpdatePanel runat="server" ID="UpdatePanel1" ChildrenAsTriggers="true" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" OnClick= "Button1_Click" Text="test" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<Cust:CompanyInformationView ID="CompanyInformationView" runat="server" />
</asp:Content>
所以我有 Test Button. OnClick 它应该“什么都不做”进行测试。 Web 表单上还有自定义控件。这是此表单的服务器端代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// fill in custom control
CompanyInfo c = GetInfo();
CompanyInformationView.Company = c;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
var i = 1;
}
CompanyInformationView 是具有属性“Company”的自定义控件。没有为该属性添加ViewState(因此如果回发完成,则无法正确加载)。当我点击Test Button 时,页面失败,因为“CompanyInformationView.Company”未设置(未设置,因为它无法从 ViewState 加载,我猜)。
相反,我认为它不应该像这样工作。 AsynPostback 应该只处理 UpdatePanel。
为什么要重新加载custom control?这是否意味着发生了 Full postback 或者我不理解 Asyncpostback?
【问题讨论】: