代码之家  ›  专栏  ›  技术社区  ›  ProfK

动态生成菜单的视图状态错误

  •  0
  • ProfK  · 技术社区  · 14 年前

    我有一个菜单控件,它用类别动态填充。当用户单击某个类别时,回发应该用该类别中的产品填充一个网格。然而,我似乎已经尽了一切可能,也就是说,无论页面的生命周期是什么时间,我总是会得到这个错误:

    未能加载视图状态。加载视图状态的控件树必须与在上一个请求期间用于保存视图状态的控件树匹配。

    以下是我的全部代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BuildCategoryMenu();
        }
    }
    
    protected void categoryMenu_ItemClick(object source, DevExpress.Web.ASPxMenu.MenuItemEventArgs e)
    {
        var catId = new Guid(e.Item.Name);
        ListProductsByCatId(catId);
    }
    
    private void BuildCategoryMenu()
    {
        var cats = _categoryService.ListActive();
        categoryMenu.Items.Clear();
        foreach (var cat in cats)
        {
            categoryMenu.Items.Add(new MenuItem { Text = cat.Name, Value = cat.id.ToString() });
        }
    }
    
    private void ListProductsByCatId(Guid catId)
    {
        productGrid.DataSource = _productService.ListByCatId(new Guid("a5c2f0ef-a3cc-4af1-abac-37f1be6a5c74"));
        productGrid.DataBind();
    }
    

    这是我的菜单:

    <asp:Menu ID="categoryMenu" runat="server" EnableViewState="false">
    </asp:Menu>
    

    EnableViewState 只是 因为它不适用于 或者。

    1 回复  |  直到 14 年前
        1
  •  0
  •   ProfK    14 年前

    对此的一个答案是避免将回发和代码URL输入到菜单项中。更安静,但可能会使菜单半开有点困难。

    推荐文章