【发布时间】:2016-04-08 21:15:38
【问题描述】:
在使用 WebGrids 时,我发现我可以访问绑定到 WebGrid 的模型上的属性,但我无法访问模型本身上的方法。
例如,这是可行的:
// Accessing a property of item works
reportGrid.Column("", header: "First Name", format: item => item.firstName )
但这不起作用: (我展示了一个简单的例子,但就我而言,我必须在 User 对象本身上调用一个方法。)
// Accessing a method on item does not work
reportGrid.Column("", header: "First Name Backwards", format: item => item.firstNameBackwards() )
=> error: 'System.Web.Helpers.WebGridRow' does not contain a definition for 'getFullName'
这似乎与以下内容有关:
Why can't I use my extension method in a delegate in the Razor WebGrid http://www.mikesdotnetting.com/Article/171/Why-You-Can%27t-Use-Extension-Methods-With-A-WebGrid
我看不到将这些解决方案应用于我的问题的方法。正如迈克布林德所说:
WebGridColumn 的 Format 参数采用的参数是 代表:功能。这意味着你必须 传入一个动态类型,然后在它之前对其进行一些处理 作为对象返回。
...
当您尝试使用扩展方法时,编译器将检查 键入您尝试使用它以查看是否存在此类方法。如果它 没有。它将检查类型派生自的任何基类 查看它们是否包含具有正确名称的正式方法。
似乎应该找到我的方法,但可能不是因为绑定到 WebGrid 的模型实际上是一个包含 IList<T> LineItems 的分页模型,其中包含我的用户引用。
是否有任何方法可以转换或获取对 User 对象本身的引用,以便我可以调用在其上定义的方法以及访问其属性?
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-4 webgrid