Edu*_*eni 5 c# asp.net-mvc webgrid
我正在使用MVC 3引入WebGrid,但在传递formatparam 的委托时不能应用我自己的扩展方法.
使用:
Grid.Column("MyProperty", "MyProperty",
format: @<span class="something">@item.MyProperty.MyExtensionMethodForString()</span>)
Run Code Online (Sandbox Code Playgroud)
我有
ERROR: 'string' does not contain a definition for 'MyExtensionMethodForString'
Run Code Online (Sandbox Code Playgroud)
我试过铸造,但没有用
Grid.Column("MyProperty", "MyProperty",
format: @<span class="something">@((string)(item.MyProperty).MyExtensionMethodForString())</span>)
Run Code Online (Sandbox Code Playgroud)
如果我使用标准方法,它的工作原理:
Grid.Column("MyProperty", "MyProperty",
format: @<span class="something">@(Utils.MyExtensionMethodForString(item.MyProperty))</span>)
Run Code Online (Sandbox Code Playgroud)
我也尝试将扩展名放在同一名称空间中,没有结果.
我如何使用我心爱的扩展?
编辑:命名空间本身不是问题,扩展可用于所有视图和类的命名空间,我可以在同一视图中使用它而没有问题.问题是在委托中使用它.
这不是 WebGrid 或 Razor 的限制。这是 C# 类型的限制dynamic。您不能在动态上使用扩展方法。格式助手接受 aFunc<dynamic, object>作为参数,因此item参数是动态类型。
几年前我写过关于这个问题的文章。
| 归档时间: |
|
| 查看次数: |
781 次 |
| 最近记录: |