Asp.net Tostring返回int而不是string
这很有效强>Asp.net Tostring返回int而不是string,asp.net,enums,Asp.net,Enums,这很有效 [DataContract] public enum TargetDatabase { [EnumMember(Value = "US")] US = 0, [EnumMember(Value = "Canada")] Canada = 1 } 或 linkClient.NavigateUrl = String.Format("~/Test.aspx?ClientId={0}&DB={0}"
[DataContract]
public enum TargetDatabase
{
[EnumMember(Value = "US")]
US = 0,
[EnumMember(Value = "Canada")]
Canada = 1
}
或
linkClient.NavigateUrl = String.Format("~/Test.aspx?ClientId={0}&DB={0}", client.Client.ID, TargetSystem.ToString());
当我使用上面的代码时,我得到
Test.aspx?ClientId=1&DB=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>
但是我想要
Test.aspx?ClientId=1&DB=Canada
有人知道为什么C#会产生一个1而不是字符串值吗?枚举存储在Web服务上,但在某些地方可以使用,而在某些地方则不能使用
MSDN文档:
format参数可以包含“G”或“G”、“D”或“D”、“X”或“X”以及“F”或“F”格式字符串如果格式为null或空字符串(“”),则使用通用格式说明符(“G”)。
<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);
您可以使用GetName方法 见:
在每个不起作用的示例中
Enum.GetName(typeof(TargetDatabase), TargetSystem)
,将第二个格式项实例(第二个{0}
)更改为第二个格式项({1}
),而不是第一个格式项({0}
):
“……在某些地方,这是有效的,而在某些地方,它不是。”它在哪里起作用,在哪里不起作用?假设它在您的问题中显示的
ItemTemplate
中不起作用,但您是否有一个例子,说明它在ASPX视图中的工作情况与您预期的一样?@J0e3gan Good call我实际上发布了一个工作正常的问题,因此我更新了问题,以包括一个不工作的问题。希望那个助手。。。这么简单。。。。谢谢你的第二双眼睛!我以为我疯了@米卡曼特罗特:我发现节俭法则通常统治着宇宙——至少看起来是调试和故障排除;我们中最聪明的人有时会在最简单的事情上绊倒……我们已经盯着看太久了。一旦我们的代码所依赖的东西不可靠的假设成立,它就可能是盲目的。是的,第二双眼睛往往是对这些不幸现实的制衡。很乐意帮忙,不用担心。
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);
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);