如果你真的想要的常量標記(不是每個代碼接受的答案後面),因爲ASP.NET 2.0中,可以用自定義的ExpressionBuilder完成。
首先,在你的web應用程序創建的ExpressionBuilder類:
namespace Your.Namespace
{
[ExpressionPrefix("Code")]
public class CodeExpressionBuilder : ExpressionBuilder
{
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry,
object parsedData, ExpressionBuilderContext context)
{
return new CodeSnippetExpression(entry.Expression);
}
}
}
然後在你的web.config中註冊:
<compilation debug="true">
<expressionBuilders>
<add expressionPrefix="Code" type="Your.Namespace.CodeExpressionBuilder"/>
</expressionBuilders>
</compilation>
最後,調用它在使用<%$ %>
語法您的標記:
<asp:RadioButtonList ID="MyRadioButtonList" runat="server">
<asp:ListItem Value="<%$ Code: CompanyName.SystemName.Constants.PaymentFrequency.FREQUENT.ToString() %>" Text="Yes" Selected="True"></asp:ListItem>
<asp:ListItem Value="<%$ Code: CompanyName.SystemName.Constants.PaymentFrequency.ONCE.ToString() %>" Text="No, Just do this once"></asp:ListItem>
</asp:RadioButtonList>
我從這裏得到了大部分的代碼:
個
http://weblogs.asp.net/infinitiesloop/The-CodeExpressionBuilder
MSDN ASP.NET表達式概述
https://msdn.microsoft.com/en-us/library/d5bd1tad.aspx
MSDN的ExpressionBuilder類參考
https://msdn.microsoft.com/en-us/library/system.web.compilation.expressionbuilder(v=vs.110).aspx
你想去的地方它使用枚舉在ASPX標記爲什麼被轉換成一個字符串?然後,您可以輕鬆使用「FREQUENT」和「ONCE」作爲值。我認爲當它位於其他類/名稱空間時,無法直接從aspx訪問枚舉。 另外:當您想要評估標記中的數據時,考慮在RadioButtonList上調用DataBind。 – 2010-09-23 12:27:12
1.這些是在整個系統中使用的常量(它非常大)。這樣他們很容易管理。 2.如果我只是打印語句,而不是將它分配給Value屬性,它就可以工作。 3.當你附加一個數據源時,你只需要綁定一個列表,我不使用它。 – Peter 2010-09-23 12:34:14
我的確有同樣的問題! – TinyRacoon 2016-04-26 13:21:06