2010-11-21 76 views
0

我有一個菜單控件,我動態地填充類別。當用戶點擊某個類別時,回發應該使用該類別中的產品填充網格。然而,我似乎已經嘗試了所有可能的方式,即無論頁面生命週期時間,只是總是得到這個錯誤:動態生成菜單的ViewState錯誤

未能加載視圖狀態。要將視圖狀態加載到其中的控制樹必須與前一個請求期間用於保存視圖狀態的控制樹相匹配。

這裏是我的所有代碼:

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只有,因爲它不與真正工作,要麼。

回答

0

對此的一個答案是避免回發和代碼URL的菜單項。更多RESTful,但可能使AJAX菜單更難一點。