La declaración de una lista de casos para ser utilizado en más de un lugar
-
28-09-2019 - |
Pregunta
Tengo el siguiente código en mi página que funciona bien, aunque el número de casos es mucho más grande. Necesito usar exactamente la misma lista de casos en otros selecciona pero no quieren tener exactamente el mismo código duplicado por todo el lugar.
tengo esto:
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
Me idealmente quiero algo como esto
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
¿Alguna idea?
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
Y en el 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
Este tipo de obras, pero hay un pequeño problema. Tengo que cargar la página dos veces por el número de teléfono para el cambio (o el aparece número de teléfono, ya que debería haber hecho en la carga anterior). Espero este sentido marcas ... que es un comportamiento bastante extraño.
Solución
Crear un método:
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;
}
}
Cuando se llama a él:
string freeCallnumber = this.getFreeCallNumber(Request.Cookies["cookie1"].Value));
if (string.IsNullOrEmpty(freeCallNumber))
{
// other logic
}
Mi conjetura que es como esto en 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
Otros consejos
Se puede probar el diccionario (De TKey, TValue) Clase
Nota: se es serializable: -Q