[DataContract]
public enum TargetDatabase
{
[EnumMember(Value = "US")]
US = 0,
[EnumMember(Value = "Canada")]
Canada = 1
}
这个有效!
<telerik:GridTemplateColumn HeaderText="Service Code" ReadOnly="True" SortExpression="ServiceCode"
UniqueName="colServiceCode">
<ItemTemplate>
<asp:HyperLink class="linkGreenBoldUnderlined" ID="lnkServiceCode" runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "ServiceCode")%>' NavigateUrl='<%# String.Format("~/Test.aspx?ServiceId={0}DB={1}", DataBinder.Eval(Container.DataItem, "ServicesID"), TargetSystem) %>'></asp:HyperLink>
</ItemTemplate>
在这背后的代码中无效
linkClient.NavigateUrl = String.Format("~/Test.aspx?ClientId={0}&DB={0}", client.Client.ID, TargetSystem.ToString());
或
linkClient.NavigateUrl = String.Format("~/Test.aspx?ClientId={0}&DB={0}", client.Client.ID, TargetSystem);
当我使用上面的代码时,我得到了
Test.aspx?ClientId = 1&amp; DB = 1
但我想要
Test.aspx文件客户端Id = 1&安培; DB =加拿大
任何人都知道为什么C#会生成一个而不是字符串值?枚举存储在web服务上,但在某些地方这是有效的,有些地方却没有。
MSDN文档:
格式参数可以包含“G”或“g”,“D”或“d”,“X”或“x”以及“F”或“f”格式字符串。 如果format为null或空字符串(“”),则使用通用格式说明符(“G”)。
示例
enum Colors {Red, Green, Blue, Yellow = 12};
Console.WriteLine("myColor.ToString(\"G\") = {0}", myColor.ToString("G"));
myColor.ToString("g") = Yellow
myColor.ToString("G") = Yellow
答案 0 :(得分:1)
在每个不起作用的例子中......
linkClient.NavigateUrl = String.Format("~/ClientAdmin.aspx?ClientId={0}&DB={0}", client.Client.ID, TargetSystem.ToString());
linkClient.NavigateUrl = String.Format("~/Test.aspx?ClientId={0}&DB={0}", client.Client.ID, TargetSystem);
...,将第二个格式项实例(第二个{0}
)...更改为第二个格式项({1}
)而不是第一个格式项({0}
):
linkClient.NavigateUrl = String.Format("~/ClientAdmin.aspx?ClientId={0}&DB={1}", client.Client.ID, TargetSystem.ToString());
linkClient.NavigateUrl = String.Format("~/Test.aspx?ClientId={0}&DB={1}", client.Client.ID, TargetSystem);
答案 1 :(得分:0)
您可以使用GetName方法
请参阅:http://msdn.microsoft.com/en-us/library/system.enum.getname(v=vs.110).aspx
Enum.GetName(typeof(TargetDatabase), TargetSystem)