Déclarant une liste de cas à utiliser dans plus d'un endroit
-
28-09-2019 - |
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.
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