【问题标题】:ASP.NET string resource to lower case?ASP.NET 字符串资源为小写?
【发布时间】:2013-06-25 11:55:06
【问题描述】:

我在 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() %>"/>

【问题讨论】:

    标签: asp.net localization webforms resx


    【解决方案1】:

    我最终构建了自己的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 %>" />
    

    【讨论】:

      【解决方案2】:

      你试过了吗:

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

      只是伪代码。

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

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

      【讨论】:

      • 看起来您不能在 &lt;%$ %&gt; 块内使用任何“代码”:The expression '&lt;%$ Resources.Global.MyString.ToLower() %&gt;' is invalid. Expressions use the syntax &lt;%$ prefix:value %&gt;
      猜你喜欢
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      相关资源
      最近更新 更多