2010-11-25 6 views
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 

のようなものの任意のアイデアをしたいですか?

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 

とを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回ロードする必要があります(または、以前のロードで実行したはずの電話番号が表示されます)。これが理にかなってほしいと思っています...それはかなり奇妙な行動です。

+0

同じページリクエストでCookieを設定(送信)すると、この問題が発生する可能性がありますか?または、あなたが電話番号で何をするかに応じて、viewstate/databindの問題かもしれません。ページをデバッグするか、レスポンスストリームに書き込んで日付を取得するタイミングを確認してください。私。 Response.Write( "Number =" + freeCallNumber); –

答えて

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 
+0

どのようにVBでこれを動作させるためのアイデア?私は試してみましたが失敗しました! – Tom

+0

それが正しいかどうか、私が追加したコードを参照してください。以前はVB.netで作業していませんでした。 –

+0

あなたは私と同じコードを手に入れています。ちょっとした手間をかけて私はそれを働かせましたが、奇妙な行動があります。元の投稿の編集を見てください。 – Tom

関連する問題