C# ASP-devexpress如何按组合框选定项筛选gridview

C# ASP-devexpress如何按组合框选定项筛选gridview,c#,asp.net-mvc,gridview,devexpress,C#,Asp.net Mvc,Gridview,Devexpress,从combobox到gridview的交互有问题。我的用例是:用户从combox值中选择,gridview将通过combobox中的值更新其内容。我正在aps Web应用程序中使用devexpress控件 型号: public class MyModel { public IEnumerable<Person> Persones() { return DataProvider.GetPersons(); } public IEnume

从combobox到gridview的交互有问题。我的用例是:用户从combox值中选择,gridview将通过combobox中的值更新其内容。我正在aps Web应用程序中使用devexpress控件

型号:

public class MyModel
{
    public IEnumerable<Person> Persones()
    {
        return DataProvider.GetPersons();
    }

    public IEnumerable<Role> Roles()
    {
        return DataProvider.GetRoles();
    }

    public int SelectedRoleId { get; set; }
}
组合框局部视图

@Html.DevExpress().ComboBox(cmbSettings =>
{
    cmbSettings.Name = "RoleId";
    cmbSettings.Width = System.Web.UI.WebControls.Unit.Pixel(200);
    cmbSettings.Properties.ValueField = "Id";
    cmbSettings.Properties.TextField = "RoleName";
    cmbSettings.Properties.ValueType = typeof(int);
    cmbSettings.SelectedIndex = 0;
    cmbSettings.Properties.IncrementalFilteringMode = IncrementalFilteringMode.Contains;

    cmbSettings.Properties.ClientSideEvents.SelectedIndexChanged =
        "function(s, e) {GridView.PerformCallback();}";

}).BindList(Model.Roles()).Bind(Model.SelectedRoleId).GetHtml()
控制器:

public class HomeController : Controller
{
    public ActionResult Index([ModelBinder(typeof(DevExpressEditorsBinder))]MyModel mo)
    {
        return View(mo);    
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult GridViewPartialView([ModelBinder(typeof(DevExpressEditorsBinder))]MyModel mo) 
    {
        return PartialView("GridViewPartialView", mo);
    }

}

所以我期望在我的控制器中更新模型,但每次我得到的模型都不是实际数据。我在模型使用中遗漏了什么?实现我的用例的最佳方式是什么?

我与来自DevExpress的人员讨论了这个问题,他们帮助我解决了这个问题

解决办法是

@Html.DevExpress().ComboBox(cmbSettings =>
{
    cmbSettings.Name = "RoleId";
    cmbSettings.Width = System.Web.UI.WebControls.Unit.Pixel(200);
    cmbSettings.Properties.ValueField = "Id";
    cmbSettings.Properties.TextField = "RoleName";
    cmbSettings.Properties.ValueType = typeof(int);
    cmbSettings.SelectedIndex = 0;
    cmbSettings.Properties.IncrementalFilteringMode = IncrementalFilteringMode.Contains;

    cmbSettings.Properties.ClientSideEvents.SelectedIndexChanged =
        "function(s, e) {GridView.PerformCallback();}";

}).BindList(Model.Roles()).Bind(Model.SelectedRoleId).GetHtml()
public class HomeController : Controller
{
    public ActionResult Index([ModelBinder(typeof(DevExpressEditorsBinder))]MyModel mo)
    {
        return View(mo);    
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult GridViewPartialView([ModelBinder(typeof(DevExpressEditorsBinder))]MyModel mo) 
    {
        return PartialView("GridViewPartialView", mo);
    }

}