【问题标题】:Declaring a case list to be used in more than one place声明一个案例列表在多个地方使用
【发布时间】:2010-11-25 13:12:32
【问题描述】:

我的页面中有以下代码,尽管案例数量要大得多,但它运行良好。我需要在其他选择中使用完全相同的案例列表,但我不想在所有地方都重复完全相同的代码。

我有这个:

   Select Case Request.Cookies("LatestRefer").Value
        Case "EZ12"
            freeCallNumber = "0800 111 1111"
        Case "EW56"
            freeCallNumber = "0800 222 2222"
        Case "AT34"
            freeCallNumber = "0800 333 3333"
        Case Else
                freeCallNumber = "0800 444 4444"
    End Select

理想情况下我想要这样的东西

Select Case Request.Cookies("cookie1").Value
            myGlobalListOfCases()
        End Select

Select Case Request.Cookies("cookie2").Value
                myGlobalListOfCases()
            End Select

Select Case Request.Cookies("cookie3").Value
                    myGlobalListOfCases()
                End Select

有什么想法吗?

编辑:

Private Function getFreeCallNumber(ByVal value As String) As String
        Select Case value
            Case "EZ12"
                Return "0800 111 1111"
            Case Else
                Return "0800 222 2222"
        End Select
    End Function

在page_load中:

If Not Request.Cookies("cookie1") is Nothing Then
    freeCallnumber = Me.getFreeCallNumber(Request.Cookies("cookie1").Value)
        Else
  freeCallnumber = Me.getFreeCallNumber(Request.Cookies("cookie2").Value)
        End If

这种工作,但有一个小问题。我必须加载页面两次才能更改电话号码(或者电话号码显示为之前加载时应该完成的)。希望这是有道理的……这是相当奇怪的行为。

【问题讨论】:

  • 如果您在同一页面请求中设置(发送)cookie,您可能会遇到此问题?或者可能是视图状态/数据绑定问题,具体取决于您对电话号码的处理方式。尝试调试页面或仅写入响应流以查看它何时获取日期。 IE。 Response.Write("Number = " + freeCallNumber);

标签: asp.net vb.net select-case


【解决方案1】:

创建一个方法:

private string getFreeCallNumber(string value)
{
    switch (value)
    {
        case "EZ12":
            return "0800 111 1111";
        case "EW56":
            return "0800 222 2222";
        // TODO: Add more switch cases here.
        default:
            return null;
    }
}

调用时:

string freeCallnumber = this.getFreeCallNumber(Request.Cookies["cookie1"].Value));
if (string.IsNullOrEmpty(freeCallNumber))
{
     // other logic
}

我猜在 VB.net 中是这样的:

Private Function getFreeCallNumber(value as String) as String
    Select Case value
        Case "EZ12"
            return "0800 111 1111"
        Case "EW56"
            return "0800 222 2222"
        ' TODO: Add more switch cases here.
        Case Else
            return Nothing
    End Select
End Function

【讨论】:

  • 知道如何让它在 VB 中工作吗?我已经尝试过了,但失败了!
  • 看看对不对,我加的代码。我以前没有使用过 VB.net。
  • 你得到了和我一样的代码,稍微摆弄了一下,我已经让它工作了,但是有一些奇怪的行为......请参阅对原始帖子的编辑。
【解决方案2】:

你可以试试Dictionary(Of TKey, TValue) Class
注意:is是可序列化的:-Q

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-27
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多