VB.NET:使用GetLocalResourceObject的页面的扩展方法

时间:2011-02-11 20:36:26

标签: vb.net localization extension-methods

在我们的.aspx页面中,我们有很多代码:

<%= CType(GetLocalResourceObject("key"), String)) %>

我想在我们的.aspx视图中添加一个扩展方法,允许我这样做:

<%= GetLocalResourceString("key") %>

但代码无效:

Imports System.Runtime.CompilerServices
Imports System.Web.UI

Module Extensions

    <Extension()> 
    Public Function GetLocalResourceString(ByVal control as TemplateControl, 
        ByVal resourceKey as String) as String
        Return CType(control.GetLocalResourceObject(resourceKey)), String)
    End Sub

End Module

根据Intellisense,问题是GetLocalResourceObject不作为System.Web.UI.TemplateControl对象的方法存在。

但是,当我在MSDN上查看this page时,它就在那里。

我做错了什么?扩展方法应该在不同的对象上吗?我已经尝试过其他人并且具有相同的Intellisense / build错误。

1 个答案:

答案 0 :(得分:0)

GetLocalResourceObject受到保护,因此只能从页面内部调用。

我发布了一个类似的问题,看看是否有人知道如何在网页外打电话。

我尝试创建一个继承了Page对象的类,然后在内部公开一个调用GetLocalResourceObject的方法。我无法让它工作,因为当你传递ME /这时你没有引用一个Page对象。

这是我的类似问题: Is there a way to move a call to ASP GetLocalResourceObject to a external static/shared method?