加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么我不能在Razor WebGrid中的委托中使用我的扩展方法

发布时间:2020-12-15 05:37:23 所属栏目:百科 来源:网络整理
导读:我正在使用MVC 3引入WebGrid,但在传递格式参数的委托时不能应用我自己的扩展方法. 使用: Grid.Column("MyProperty","MyProperty",format: @span class="something"@item.MyProperty.MyExtensionMethodForString()/span) 我有 ERROR: 'string' does not cont
我正在使用MVC 3引入WebGrid,但在传递格式参数的委托时不能应用我自己的扩展方法.

使用:

Grid.Column("MyProperty","MyProperty",format: @<span class="something">@item.MyProperty.MyExtensionMethodForString()</span>)

我有

ERROR: 'string' does not contain a definition for 'MyExtensionMethodForString'

我试过铸造,但没有用

Grid.Column("MyProperty",format: @<span class="something">@((string)(item.MyProperty).MyExtensionMethodForString())</span>)

如果我使用标准方法,它的工作原理:

Grid.Column("MyProperty",format: @<span class="something">@(Utils.MyExtensionMethodForString(item.MyProperty))</span>)

我也尝试将扩展名放在同一名称空间中,没有结果.

我如何使用我心爱的扩展?

编辑:命名空间本身不是问题,扩展可用于所有视图和类的命名空间,我可以在同一视图中使用它而没有问题.问题是在委托中使用它.

解决方法

这不是WebGrid或Razor的限制.这是C#动态类型的限制.您不能在动态上使用扩展方法.格式助手采用Func< dynamic,object>作为参数,因此item参数是动态类型.

我几年前的wrote about this exact issue.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读