Dropdownlist返回null,部分页面回发

时间:2011-08-24 00:35:03

标签: asp.net null updatepanel postback partial

我试图在部分页面回发后从下拉列表中读取值。出于某些原因,它始终为空。

ASP:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
   <ContentTemplate>
       <asp:DropDownList ID="ddlW1SundayProject1" runat="server" 
            DataSourceID="dataProjectList" 
            DataTextField="ProjectName" DataValueField="Project_Id"
            AppendDataBoundItems="true" 
            onBlur="validateProjectTask('W1', 'Sunday', 1);" 
            AutoPostBack="True" ">
            <asp:ListItem Text="" Value="" Selected="True"></asp:ListItem>
        </asp:DropDownList>
        <asp:Label ID="lblW1SundayProject1" runat="server"></asp:Label>
    </ContentTemplate>
</asp:UpdatePanel>

代码背后:

protected void Page_Load(object sender, EventArgs e)
{

   if (ScriptManager.IsInAsyncPostBack)
   {
       lblW1SundayProject1.Text = "User selected: " + Request.Form["ddlW1SundayProject1"];   // this is always null
   }
}

Out put是:“用户选择:”

3 个答案:

答案 0 :(得分:1)

它不起作用,因为ASP.NET服务器控件(如DropDownList)会破坏表单字段的名称/ ID。因此,使用您为控件ID键入的名称(ddlW1SundayProject1)来查找Form集合时将找不到任何内容(因为html中的实际名称将类似于ctl00_UpdatePanel1_ddlW1SundayProject1)。

要获取已发布的返回值,您可以使用ddlW1SundayProject1.SelectedValue,或者如果由于某些奇怪的原因需要查看表单集合,则可以执行Request.Form[ddlW1SundayProject1.ClientID]

答案 1 :(得分:0)

如果您在Visual Studio中没有收到任何错误,似乎工作正常,因为我唯一能看到您的代码不正确的是<asp:DropDownList标记在{{1你有一个额外的“

答案 2 :(得分:0)

原来,BlockUI阻止了回发。我找到了解决方案:JQuery BlockUI with UpdatePanel Viewstate Issue