在共享布局 mvc 5 中绑定 GridLookup 控件

Bind GridLookup control in shared layout mvc 5

我正在使用 Devexpress MVC 应用程序,我在共享布局中使用了一个 GridLookup 控件。我在这里需要一些控制器,它将根据每个请求调用一个方法。为此,我使用了基本控制器并使用 ActionExecutingContext 方法,我在其中调用我的菜单加载和 gridlookup 加载。我正在使用 viewdata 设置值,在共享视图中我使用了我的 GridLookup 控件的部分视图,我将 viewdata 绑定到 GridLookup。 下面是用于加载 gridlookup 的菜单和过滤器的 Base 控制器。

protected override void OnActionExecuting(ActionExecutingContext context)
{
     base.OnActionExecuting(context);
     ProcessingMenus();
}

下面是我在其中使用 gridlookup 控件的部分视图的共享布局

@Html.Partial("_ReportFilter")

下面是本部分中使用的 GridLookup 控件:

@{
     var gridLookup = Html.DevExpress().GridLookup(settings =>
     {
         settings.Name = "LookupLobMultiple";
         settings.KeyFieldName = "Description";
         settings.GridViewProperties.CallbackRouteValues = new { Controller = "Manage", Action = "BindLOB" };
         settings.Properties.SelectionMode = GridLookupSelectionMode.Multiple;
         settings.Properties.TextFormatString = "{0}";
         settings.Properties.MultiTextSeparator = ";";
         settings.CommandColumn.Visible = true;
         settings.CommandColumn.ShowSelectCheckbox = true;
         settings.CommandColumn.SelectAllCheckboxMode = GridViewSelectAllCheckBoxMode.AllPages;
         settings.GridViewProperties.SettingsPager.Visible = false;
         settings.GridViewProperties.Settings.ShowGroupPanel = false;
         settings.GridViewProperties.Settings.ShowFilterRow = false;
         settings.Columns.Add("ID").Visible = false;
         settings.Columns.Add("Description").Caption = "Line of Business";
         settings.PreRender = (s, e) =>
         {
              MVCxGridLookup gl = (MVCxGridLookup)s;
              gl.GridView.Selection.SelectRowByKey(ViewData["LOB"]);
         };
    });
}
@gridLookup.BindList(ViewData["LobModal"]).GetHtml()

在上面的 GridLookup 控件中,您可以看到使用在 ProcessingMenus 方法中加载的视图数据绑定数据。 这里的第一个问题是在 GridLookup 中,我也使用了控制器和操作方法,但是当我检查和取消选中任何值并显示正在加载时,这不是调用... 第二个问题是,如果我再次点击 url OnActionExecuting 方法不会调用,因为菜单不会再次加载。

我发现 Devexpress 团队的答案是使用 @{Html.RenderAction("action", "controller");} 在共享视图中调用局部视图,然后在该操作中调用需要在共享布局中显示并传递模型数据的局部视图。 并且在部分视图中只需将网格与传递的模型绑定。

就是这样。

感谢您的所有建议。