当前位置:  开发笔记 > 编程语言 > 正文

如何在数据绑定控件中使用Eval调用扩展方法

如何解决《如何在数据绑定控件中使用Eval调用扩展方法》经验,为你挑选了3个好方法。

我在int类型上有一个简单的扩展方法,所以我可以执行以下操作:

string timeLength = 61.ToTime() // timeLength will be "1:01"

这在代码中很有用,但我想在Repeater模板中使用这种扩展方法.数据绑定时,我想执行以下操作:

<%# Eval("LengthInSeconds").ToTime() %>

这没用,所以我试过:

<%# ((int) Eval("LengthInSeconds")).ToTime() %>

它仍然无法正常工作.JIT编译器没有看到我的扩展方法,我在页面中有正确的import语句.

我解决这个问题的唯一想法是用Literal控件替换Eval并在代码隐藏中调用扩展方法,但不管怎样,我仍然想知道为什么这不起作用.

谢谢



1> 小智..:

我遇到了同样的问题,最终找到了解决方案.

在我的情况下,我忘了导入我的Extensionmethod类的命名空间.即使页面后面的代码包含命名空间,aspx页面也没有.

我刚刚在web.config文件中添加了命名空间:


  
    
  

瞧!!



2> Scott Muc..:

看起来我可以回答我自己的问题!Asp.Net正在使用.Net 2.0编译器编译.aspx,.ascx模板.我需要将以下内容添加到我的web.config中以使其工作

  
    
      
        
        
      
    
  

我仍然需要在Eval中执行强制转换为(int),但这至少对我有意义.



3> dan richards..:

为我解决它的另一个解决方案(类似于Patrik的)是在该特定控件或aspx页面上导入命名空间.

<%@ Import Namespace="My.Namespace.Containing.MyExtensions.Class" %>

这个解决方案更适合我的问题,因为扩展方法仅适用于一个控件中使用的类.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有