Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Tostring返回int而不是string_Asp.net_Enums - Fatal编程技术网

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);