2011-08-08 3 views
0

私はサムネイルのギャラリーを持っています。サムネイルをクリックすると、メイン画像はjQueryを使ってクリックしたサムネイルに変更され、サムネイルの 'src'タグが変更されます。これは期待どおりに動作します。jqueryを使ってイメージのsrcを変更すると、srcは私の#codebehindで変更されないのですか?

$('#ContentPlaceHolder1_photoSpotImage').attr('src', src.replace(/-thumbs/, '')); 

私はリンクをクリックすると、ヘッダーのContent-Dispositionメソッドを使用してイメージをダウンロード可能なファイルにします。コードにハード設定されている場合、期待どおりに動作します。

<asp:LinkButton runat="server" PostBackUrl="" ID="link2TheDownload" Text="+ download it" onclick="link2TheDownload_Click"></asp:LinkButton> 

ここで、タグの 'src'タグから選択したイメージのファイル名を取得するコードビハインドにプログラムで追加しました。

string thisServerName = Request.ServerVariables["SERVER_NAME"].ToString(); 
    string thisHref = "http://" + thisServerName + "/" +photoSpotImage.Src.ToString(); 
    Uri uri = new Uri(thisHref); 
    string filename = Path.GetFileName(uri.LocalPath); 
    string thisAttachment = "attachment; filename=" + filename.ToString(); 
    Response.ContentType = "image/jpeg"; 
    Response.AppendHeader("Content-Disposition", thisAttachment.ToString()); 
    Response.TransmitFile(strDirectFilePath.ToString() + "/photos/1/" + filename.ToString()); 
    Response.End(); 

C#のファイル名は、最初はOnloadに設定されていますが、jQueryはsrcを変更していないようです。

私はユーザーが適切なイメージファイルをダウンロードできるように、現在のファイル名を取得する必要があります。

ヘルプ!

+0

'photSpotImage.Attributes [" src "]' –

+0

C#ソースを見ると、 "runat = Server"と表示されます。 Webフォームは、サーバーの生き物です(HTMLで表示され、ブラウザに送信されます)。 jQueryは完全にクライアント側です(ブラウザでは完全に実行されます)。 twainは決して会わなければなりません:) – paulsm4

答えて

4

JQueryは、クライアント側でのみDOMを操作します。ビューの状態は変更されず、イメージはPOST要求に含まれません。正しい値で隠しフォームフィールドをポストバックする必要があります。

+0

私はダウンロードプロセスを別のページに入れ、submit時に隠しフィールドに渡しました。ありがとう! –

0

はい、コードからの正しい結果です。サーバーからレンダリングされたhtmlを使用しているため、更新されません。jQueryが更新されたhtmlではなく、これは実際の動作です。このようなあなたのC#コード:

string thisServerName = Request.ServerVariables["SERVER_NAME"].ToString(); 
photoSpotImage.Src.ToString().Replace("-thumbs", string.Empty); 
0

まず、あなたのコードビハインドでこれを行う:

photoSpotImage.Attributes["data-filename"] = "image.jpg"; 

を今、これは出力、クライアント側でこのような何かを希望

あなたはA-要素の属性として埋め込まれたファイル名を持っているので、あなたはjQueryのを使用してファイルへの完全なURLを形成することができます

$('#ContentPlaceHolder1_photoSpotImage').attr('src', $('#ContentPlaceHolder1_photoSpotImage').attr('data-filename'))); 

あなたの代わりに、「ファイル・パス」を使用することができます上記の例はあなたに一般的な考えを与えるはずです。

関連する問題