2012-02-22 28 views
1

私は画像ギャラリーに取り掛かり、画像ギャラリーを利用して画像をアップロードできます。アップロードされた画像は、サムネイルに変換され、サムネイル用の特定のフォルダに入れられ、元の画像は、フルサイズの画像用のフォルダに入れられます。画像アップロード後のサムネイルを表示

コードビハインドのPage_Loadメソッドでは、フォルダからサムネイルを取得して、使用しているリピータにバインドします。つまり、ページが読み込まれるとそのフォルダ内のすべての画像が表示されます。

ユーザーが画像のアップロードを選択すると、UploadButton_Click関数が呼び出され、ファイルが処理されてフルサイズで表示されます。アップロードされた画像のサムネイルがアップロードされた直後には表示されないということは、すべてうまくいきます。それを表示するには、Page_Loadが再びロードされるようにページをリロードする必要があります。

もちろん、これを解決するための方法は、サムネイルを取得し、RepeaterコントロールをUploadButton_Click関数にバインドするコードを置くことですが、それは私が気に入らないDRYです。

これを改善する方法はありますか?背後

コード:

protected void Page_Load(object sender, EventArgs e) { 
    var directory = new DirectoryInfo(Gallery.PhysicalApplicationPath + "/Images"); 
    var theFiles = directory.GetFiles(); 

    ImageRepeater.DataSource = theFiles; 
    ImageRepeater.DataBind(); 

    var dataName = Request.QueryString["name"]; 

    if (dataName != null) { 
     fullSizeImage.ImageUrl = "Images/" + dataName; 
    } 
} 

protected void UploadButton_Click1(object sender, EventArgs e) { 
    if (Page.IsValid) { 
     if (ImageUpload.HasFile) { 
      var content = ImageUpload.FileContent; 
      var name = ImageUpload.FileName; 
      var image = Gallery.SaveImage(content, name); 

      fullSizeImage.ImageUrl = "Images/" + image; 
     } 
    } 
} 

答えて

1

は、ページのライフサイクルで行うことです。アップロードが行われる前にPage_loadが発生しています。

Page_Loadではなく、Page_PreRenderにサムネイルを埋め込むコードを入れてみてください。

 protected void Page_PreRender(object sender, EventArgs e) { 
     //CODE HERE} 

アップロードボタンがクリックされた後にそれが発生するようになります。

+0

偉大な、魅力のように動作します!ありがとう! – holyredbeard

関連する問題