【问题标题】:Adding extension methods to ASP.net repeater's NamingContainer向 ASP.net 中继器的 NamingContainer 添加扩展方法
【发布时间】:2013-01-30 12:33:10
【问题描述】:

我正在尝试为 asp.net 转发器控件编写一个扩展方法,该方法允许我在转发器模板中调用以下代码。这就是说我想在中继器上调用我自己的 Eval 方法。

<%# UmbracoEval("propertyName") %>

我尝试将 Repeater 控件本身和 NamingContainer 设为目标,但在看到 Container 受到保护时出现可访问性错误。

这甚至可能吗?我从来没有从标记中调用扩展方法,所以我不确定。谢谢。

【问题讨论】:

    标签: asp.net extension-methods asprepeater


    【解决方案1】:

    您仍然需要 Eval 或 Bind - UmbracoEval(Eval("propertyName"))UmbracoEval(Bind("propertyName"))

    Eval 和 Bind 都返回一个对象,因此对象的扩展方法不是一个好主意。

    但是,您可以在后面的代码中创建 UmbracoEval 并从 aspx 中调用它。

    protected string UmbracoEval(object eval)
    {
        return eval.ToString() + " abc"; // do something
    }
    

    【讨论】:

    • 感谢您的回复。这是我将在 40-50 个母版页上使用的方法,因此我可能会创建一个帮助类。我想远离辅助方法方法,但看起来这将是最简单/最可行的。
    • 如果是这种情况,您可以创建一个扩展方法,如 [public static string UmbracoEval(this object eval)...]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    相关资源
    最近更新 更多