asp.net-mvc-3 - ASP.NET MVC3 WebGrid 帮助程序和模型元数据

标签 asp.net-mvc-3 modelmetadata webgrid

我正在尝试使用 ASP.NET MVC 3 中的 WebGrid html 帮助程序根据 ModelMetadata 中找到的信息自动生成列。例如,接受对象列表的 View 中的代码为:

var grid = new WebGrid(Model);
@grid.GetHtml(columns: ViewData.ModelMetadata.Properties.Single.Properties
               .Select(p => grid.Column(
                       columnName: p.PropertyName,
                       header: p.ShortDisplayName
               )));

这实际上就像一个魅力(我很惊讶它实际上这么简单)。这里发生的情况是,从模型的属性中,我使用 ShortDisplayName 作为列的标题。

问题?我需要对所有列应用默认格式。基本上我想对网格将显示的所有数据使用 Html.Raw 扩展。尝试是这样的:

var grid = new WebGrid(Model);
@grid.GetHtml(columns: ViewData.ModelMetadata.Properties.Single.Properties
               .Select(p => grid.Column(
                       columnName: p.PropertyName,
                       header: p.ShortDisplayName,
                       format: (item) => Html.Raw(GetPropertyValue(item, p.PropertyName))
               )));

其中方法 GetPropertyValue 将使用反射或其他方式读取属性的值(这里需要提醒的是,项目是动态的,其值实际上是当前行中显示的对象)。

有没有更好的方法来做到这一点?

谢谢

科斯塔斯

最佳答案

我建议您研究 MVCContrib Grid 项目:http://mvccontrib.codeplex.com/wikipage?title=Grid

关于asp.net-mvc-3 - ASP.NET MVC3 WebGrid 帮助程序和模型元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4874544/

相关文章:

jquery - asp.net mvc 3 razor 文件上传

asp.net-mvc-3 - 我们是否应该在 nTier 应用程序中使用 WCF 服务作为我们的服务层外观

c# - 如何获取 Razor View 引擎中集合中项目的元数据?

ASP.NET MVC - 从模型对象类型而不是 View 的声明模型使用模型的元数据

asp.net-mvc - Razor 嵌套 WebGrid

asp.net-mvc-3 - 如何更改获取数据的 WebGrid 操作 (.NET MVC3)

c# - 在 Html.ActionLink 中包含所有查询字符串参数

c# - 在 MVC 3 中对 DataTable 对象使用分页

asp.net-mvc - 将新属性添加到 MVC ModelMetadata

javascript - 在 webgrid 中添加表格行时出现分页问题?