2010-11-21 52 views
0

カテゴリを動的に設定するMenuコントロールがあります。ユーザーがカテゴリをクリックすると、そのカテゴリの製品がポストバックによってグリッドに表示されます。しかし、私は可能な限りあらゆる方法で試したようです。つまり、ページライフサイクルタイムを問わず、常にこのエラーが発生するだけです。動的に構築されたメニューでViewStateエラーが発生する

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

これに対する1つの答えは、メニュー項目にポストバックとコードURLを避けることです。より多くのRESTfulが、おそらくAJAXingメニューを少し難しくしています。

関連する問題