我在Razor视图中使用以下代码来配置DevExpress GridView MVC扩展的网格设置。代码一切都很好,但现在我希望从网格中进行数据导出,这需要在“服务器”上的相同配置代码,即视图的上游。我可以很容易地做到这一点并在我的视图模型上提供GridSettings属性,如果它不是对WebViewPage<TModel>.ViewContext
属性的必需访问。
现在我正在使用一个非常难看的解决方法,并从视图中将ViewContext
传回控制器;然后控制器构建网格设置。毋庸置疑,在控制器上调用方法的观点相当臭。
settings.Columns.Add(column =>
{
column.Caption = "#";
column.SetDataItemTemplateContent(c =>
{
ViewContext.Writer.Write(
Html.ActionLink("Edit", "Edit", new {id = DataBinder.Eval(c.DataItem, "Id")}) + " " +
Html.ActionLink("Delete", "Delete", new {id = DataBinder.Eval(c.DataItem, "Id")},
new {onclick = "return confirm('Do you really want to delete this record? [Just say no!]')"})
);
});
column.SetHeaderTemplateContent(c => ViewContext.Writer.Write(Html.ActionLink("New", "Create")));
column.Settings.AllowDragDrop = DefaultBoolean.False;
column.Settings.AllowSort = DefaultBoolean.False;
column.Width = 70;
});
settings.Columns.Add("RefNum", "Emp. No.");