ASP.NET字符串资源小写?

时间:2013-06-25 11:55:07

标签: asp.net localization webforms resx

我在ASPX中包含了一个字符串资源:

<asp:Literal runat="server" Text="<%$ Resources:Global, MyString %>"/>

假设MyString的值为“Home”。如何在资源标签中将其转换为小写(“home”)?例如,我不想在资源文件中存储字符串的大写/小写和小写变体。

我意识到我可以正常地(控制之外)这样做:

<%= Resources.Global.MyString.ToLower() %>

但是当我必须将资源用于控件的某些属性时,这无济于事。我希望能够做一些简单的事情,例如:

<asp:Literal runat="server" Text="<%$ (Resources:Global, MyString).ToLower() %>"/>

2 个答案:

答案 0 :(得分:2)

我最终构建了自己的ExpressionBuilder,它使用内置的ResourceExpressionBuilder来获取基础资源值,然后将其转换为小写:

将基本表达式转换为小写字符串

public class ResourceLowerCase : ResourceExpressionBuilder
{
    public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
    {
        CodeExpression getResourceExpression = base.GetCodeExpression(entry, parsedData, context);
        CodeMethodInvokeExpression toStringExpression = new CodeMethodInvokeExpression(getResourceExpression, "ToString");
        CodeMethodInvokeExpression toLowerExpression = new CodeMethodInvokeExpression(toStringExpression, "ToLower");

        return toLowerExpression;
    }
}

注册表达式生成器

<system.web>
    <expressionBuilders>
        <add expressionPrefix="ResourceLowerCase" type="My.Project.Compilation.ResourceLowerCase"/>
    </expressionBuilders>
</compilation>

调用表达式构建器

<asp:Literal runat="server" Text="<%$ ResourceLowerCase:Global, MyString %>" />

答案 1 :(得分:0)

你试过了吗?

<asp:Literal runat="server" Text="<%$ Code:
GetGlobaloResources("MyString").ToString().ToLower() %>"/>

只是伪代码。

更新:
http://weblogs.asp.net/infinitiesloop/archive/2006/08/09/The-CodeExpressionBuilder.aspx

只需使用上面链接中的CodeExpressionBuilder即可。