用户控件内的.net表单在回发后丢失值

时间:2014-11-03 16:45:58

标签: c# asp.net .net user-controls viewstate

我有一个非常标准的母版页和ContentPlaceHolder。

<section class="content" style="height:100%;">
    <form id="contentForm" runat="server">
        <div class="container" style="background:#fff; border:30px solid #fff; height:80%;">
            <div class="row" style="height:100%;">
                <section class="span8" role="main" style="height:100%;">
                    <asp:ContentPlaceHolder Id="MainContent" runat="server" />
                </section>
            </div>
        </div>
    </form>
</section>

在ContentPlaceHolder中我有一个包含下拉列表和文本框的usercontrol。

使用主页面中的from标记,如果我更改下拉选项,页面将按预期提交,并且表单字段将保留其选定的值。现在,我需要从Master页面中删除from标记,因为它会导致其他一些页面失败。我想将表单标记放在usercontrol中。

<form id="trackingForm" runat="server">
<div id="employee" class="statsTable"><strong>Employee:</strong> 
    <asp:DropDownList ID="selectPerson_DDL" runat="server" Width="200" AutoPostBack="true" onselectedindexchanged="selectPerson_DDL_SelectedIndexChanged"></asp:DropDownList>
</div>
</form>

该页面仍然像以前一样提交,但现在我在下拉列表中丢失了所选值。我已经尝试了各种选项,例如检查Page.IsPostBack等。我看到在提交表单后存在ViewState。

为什么控制行为会因为form标签现在位于usercontrol中而改变?

1 个答案:

答案 0 :(得分:0)

将表单放在asp:updatepanel控件中可以解决问题。