所选择的下拉列表在回发后会丢失为零

时间:2015-12-16 15:29:53

标签: c# asp.net

我有一个asp.net下拉列表,其中enableviewstate为false 我在不使用ispostback的情况下绑定了pageload中的下拉列表。

 protected void Page_Load(object sender, EventArgs e)
        {
              binddropdown();
        }

我已将enableviewstate设置为false,因为我检查了很多viewstate信息是否存储在隐藏的field.due中,哪个页面呈现得很慢。

当我更改下拉列表选中项目并单击提交按钮。下拉列表selectedindex松散,因为在页面加载时我是绑定下拉列表。

如何有效地使用viewstate和pagelifecycle。

1 个答案:

答案 0 :(得分:1)

您的代码问题在于,由于您已禁用了下拉列表的ViewState,因此无法保留这些项目,并且每个回发项目都会被填充(显然我们必须像您一样) 。由于项目再次添加,您的下拉列表将再次重置,您无法获得所选值。

恕我直言,你不应该禁用你的下拉列表的 protected void Page_Load(object sender, EventArgs e) { binddropdown(); if(IsPostBack) { DropDownList1.SelectedValue = Request.Form["DropDownList1"]; } } 。但是,如果您已经使用,则可以使用表单集合设置所选值,如下所示: -

只需在初始页面加载时绑定下拉列表: -

public class ServicesModule : NinjectModule
{
    public override void Load()
    {
        Kernel.Bind<IDocumentServiceApi>().To<DocumentServiceApi>().InRequestScope();
        Kernel.Bind<IConfigurationService>().To<ConfigurationService>().InRequestScope();
        Kernel.Bind<IReportGenerationProcessor>().To<ReportGenerationProcessor>().InRequestScope();
    }
}