我正在使用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
方法加载的viewdata查看绑定数据。
这里的第一个问题是在GridLookup中我也使用了控制器和操作方法但是当我检查并取消选中任何值并显示正在加载时,这不会调用....
第二个问题,如果我再次点击url OnActionExecuting
方法之后的某个时间没有调用,因为菜单没有再次加载。
答案 0 :(得分:0)
我发现Devexpress团队的答案是在共享视图中调用部分视图使用@ {Html.RenderAction(" action"," controller");}然后在该操作中通过传递模型数据调用需要在共享布局中显示的局部视图。 在局部视图中,只需将网格与传递的模型绑定即可。
那就是它。
感谢您的所有建议。