Question

J'ai le code suivant dans ma page qui fonctionne très bien, bien que le nombre de cas est beaucoup beaucoup plus. Je dois utiliser exactement la même liste des cas dans d'autres sélections, mais je ne veux pas avoir exactement le même code en double dans tous les sens.

J'ai ceci:

   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

Je veux idéalement quelque chose comme ça

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

Toutes les idées?

EDIT:

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

Et dans le 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

Ce genre de travaux, mais il y a un léger problème. Je dois charger la page deux fois pour le numéro de téléphone au changement (ou le numéro de téléphone apparaît comme il aurait dû faire de la charge précédente). Je espère que ce sens de marques ... c'est un comportement assez bizarre.

Était-ce utile?

La solution

Créer une méthode:

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

Lors de l'appelant:

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

Je pense qu'il est comme ça dans 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

Autres conseils

Vous pouvez essayer Dictionary (Of TKey, TValue) Classe
Note: est sérialisable: -Q

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top