2010-11-25 3 views
0

J'ai le code suivant dans ma page qui fonctionne bien bien que le nombre de cas soit beaucoup plus grand. Je dois utiliser exactement la même liste de cas dans d'autres sélections, mais je ne veux pas avoir exactement le même code dupliqué partout.Déclarer une liste de cas à utiliser à plusieurs endroits

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 d'œuvres, mais il y a un léger problème. Je dois charger la page deux fois pour que le numéro de téléphone change (ou le numéro de téléphone apparaît comme il aurait dû le faire sur le chargement précédent). J'espère que cela a du sens ... c'est un comportement assez étrange.

+0

Peut-être que vous obtenez ce problème si vous définissez (envoyez) les cookies dans la même demande de page? Ou peut-être que c'est un problème de viewstate/databind, selon ce que vous faites avec le numéro de téléphone. Essayez de déboguer la page ou écrivez simplement dans le flux de réponse pour voir quand il récupère la date. C'est à dire. Response.Write ("Number =" + freeCallNumber); –

Répondre

2

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'appel:

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

Je pense qu'il est comme ceci 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 
+0

Une idée de comment obtenir ce travail en VB ?? J'ai bien essayé mais j'ai échoué! – Tom

+0

Voir si c'est correct, le code que j'ai ajouté. Je n'ai pas travaillé avec VB.net avant. –

+0

Vous avez le même code que moi, et avec un peu de fiddling je l'ai un peu fait fonctionner, mais il y a un comportement étrange ... voir les modifications à la publication originale. – Tom

Questions connexes