Asp.net mvc 网页更改时丢失WebGrid筛选器复选框值

Asp.net mvc 网页更改时丢失WebGrid筛选器复选框值,asp.net-mvc,checkbox,pagination,filtering,webgrid,Asp.net Mvc,Checkbox,Pagination,Filtering,Webgrid,我在MVC应用程序中使用WebGrid和视图模型。My Viewmodel有一个名为“CompanyFilter”的int[]成员,用于从公司复选框列表中获取用户的多项选择以搜索产品数据库 ViewModel将通过Ajax.beginnform发送给controller,controller将返回相同的ViewModel和产品列表,以填充主要是Webgrid和分页(服务器端分页)的部分视图 当我选中一些复选框,单击submit按钮并正确获得结果时,它工作得很好。问题是,当我在WebGrid中单击

我在MVC应用程序中使用WebGrid和视图模型。My Viewmodel有一个名为“CompanyFilter”的int[]成员,用于从公司复选框列表中获取用户的多项选择以搜索产品数据库

ViewModel将通过Ajax.beginnform发送给controller,controller将返回相同的ViewModel和产品列表,以填充主要是Webgrid和分页(服务器端分页)的部分视图

当我选中一些复选框,单击submit按钮并正确获得结果时,它工作得很好。问题是,当我在WebGrid中单击“下一页”时,它在控制器端的公司过滤器中丢失了我的多选择值

通过调试,我发现视图确实返回了正确的数据,但MVC在为控制器填充viewmodel时未能绑定数据。谁能告诉我为什么

最有趣的是,如果我将CompanyFilter更改为string[],它就可以工作。但是,当Webgrid进行分页时,MVC向CompanyFilter[0]提供“1,4,5”,而不是我假设的CompanyFilter[0]=“1”,CompanyFilter[1]=“4”,CompanyFilter[2]=“5”。为什么会这样

有什么解决这个问题的建议吗?我更喜欢使用int[],而不是string[]。谢谢

这是我的代码供参考

public class ProductSearchViewModel
{
    public List<Company> CompanyFullList { get; set; }
    public int[] CompaniesFilter { get; set; }
    //Search Result
    public IEnumerable<ProductInfor> ProductList { get; set; }
}

public ActionResult M_ProductSearchIndex(ProductSearchViewModel searchViewModel)
{
    search database...

    if (Request.IsAjaxRequest())
    {
        return PartialView("_M_ProductSearchResult", searchViewModel);
    }
    else
    {
        return View(searchViewModel);
    }        
}
公共类ProductSearchViewModel
{
公共列表公司fulllist{get;set;}
public int[]CompaniesFilter{get;set;}
//搜索结果
公共IEnumerable ProductList{get;set;}
}
公共行动结果M_ProductSearchIndex(ProductSearchViewModel searchViewModel)
{
搜索数据库。。。
if(Request.IsAjaxRequest())
{
返回PartialView(“\M\u ProductSearchResult”,searchViewModel);
}
其他的
{
返回视图(searchViewModel);
}        
}
我的看法是:

@model MyApp.Models.ViewModels.ProductSearchViewModel
<div id="CompaniesChkboxs">
@foreach (var company in Model.CompanyFullList)
{
    <input type="checkbox" name="CompaniesFilter" value="@company.Id", @(Html.Raw(company.Selected ? "checked=\"checked\"" : "")) /> @company.CompanyName
}
</div>

@Html.Partial("_U_ProductSearchResult", Model)
@model MyApp.Models.ViewModels.ProductSearchViewModel
@foreach(Model.CompanyFullList中的var公司)
{
@company.CompanyName
}
@Html.Partial(“\U\U产品搜索结果”,模型)