0

私のページには次のコードがありますが、ケースの数ははるかに多いですが、正常に機能します。他の選択でまったく同じケースのリストを使用する必要がありますが、まったく同じコードをあちこちで複製したくありません。

私はこれを持っています:

   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

この種の作品ですが、少し問題があります。電話番号を変更するには、ページを2回ロードする必要があります(または、前回のロードで行ったはずの電話番号が表示されます)。これが理にかなっていることを願っています...それはかなり奇妙な振る舞いです。

4

2 に答える 2

2

メソッドを作成します。

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
于 2010-11-25T13:23:15.247 に答える
1

Dictionary(Of TKey、TValue)クラスを試すことができます
注:シリアル化可能です:-Q

于 2010-11-25T13:16:42.400 に答える