2008-09-04 20 views
0

シナリオ:一連の画像に次の画像を表示するASP.Net Webページがあります。 1.jpgが現在ロードされている場合、リフレッシュは2.jpgをロードする必要があります。
このコードを使用すると仮定すると、現在のイメージ名はどこにありますか。ASP.Net Webサイトから現在のイメージ名を取得するにはどうすればよいですか?

string currImage = MainPic.ImageUrl.Replace(".jpg", ""); 
currImage = currImage.Replace("~/Images/", ""); 

int num = (Convert.ToInt32(currImage) + 1) % 3; 
MainPic.ImageUrl = "~/Images/" + num.ToString() + ".jpg"; 

上記のコードの問題は、使用されたウェブページが1.JPGに設定された画像を使用してデフォルトのサイトなので、ロードされたイメージは常に2.JPGであるということです。
ページを読み込む過程で、最後に使用したイメージをページのプロパティから取り出すことは可能ですか?あなたがのHiddenFieldまたはどこかにそのようなViewStateのかの最後の値を非表示にする必要があります

答えて

5
int num = 1; 

if(Session["ImageNumber"] != null) 
{ 
    num = Convert.ToInt32(Session["ImageNumber"]) + 1; 
} 

Session["ImageNumber"] = num; 
5

あなたのページのViewState辞書にデータを保存することができます

だからあなたのPage_Loadにあなたが何かを書くことができますlike ...

var lastPicNum = (int)ViewState["lastPic"]; 
lastPicNum++; 

MainPic.ImageUrl = string.Format("~/Images/{0}.jpg", lastPicNum); 

ViewState["lastPic"] = lastPicNum; 

あなたはアイデアを得るべきです。 ASP.NETの多くは、同様の落とし穴と

そして、あなたはASP.NETのプログラミングをしているし、まだViewStateのとWebフォームがどのように働くかを理解していない場合、あなたは最初からthis MSDN article

理解のViewStateを読むべきで役立ちます。

0

F5などのリフレッシュボタンを押したときに画像を次の順序に変更する必要がある場合は、最後の画像IDなどをサーバー側のストレージまたはCookieに保存する必要があります。 Session変数などを使用します。

0

これは、最後に表示された値を保持する(覚えておく)期間によって異なります。私の好みの選択はセッションです。

0

@chakrit

ページを更新すると、これは本当に機能しますか?

私はビューステートがページに保存されていて、ポストバック時にサーバーに送信されなければならないと考えています。

0

@John ah申し訳ありません、あなたの「リフレッシュ」はポストバックを意味すると思いました。

この場合、セッション変数を使用してください。

FYIでは、変数がという単一ページの内部でのみ使用されるため、Sessionの代わりにViewState辞書を使用することをお勧めします。セッション全体の変数を使用しないでください。

関連する問題