2013-06-25 63 views
3

我包括在一個ASPX字符串資源:ASP.NET字符串資源爲小寫?

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

假設的MyString值是「家」。我怎樣才能將它轉換爲資源標籤中的小寫字母(「home」)?例如,我不希望在資源文件中存儲字符串的大寫/小寫變體。

我知道我可以這樣通常做這個(控制外):

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

但是,當我必須使用的資源進行控制的一些屬性,並不能幫助。我希望能夠做一些簡單的如:

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

回答

0

你試過:

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

只是僞代碼。

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

剛剛從上面的鏈接使用CodeExpressionBuilder。

+0

它看起來並不像你可以使用''<%$ %>塊中的任何 「代碼」:'表達「<%$ Resources.Global.MyString.ToLower( )%>'無效。表達式使用語法<%$ prefix:value%>' –

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 %>" />