2012-03-16 23 views
1

この質問はもう少し長くなり、ごめんなさい:
asp mvcとJQueryで画像ギャラリーを作成するには、数日間最善の解決策を探します。
主な問題は、ユーザーが親指をクリックしたときに画像を表示することです。
ブラウザ全体を黒く見せ、中央(幅/高さ100%)の画像にしたいです。
私は何かを作ったし、それは動作します。しかし、私が修正していないいくつかの問題があります。
ここで私はそれをやった:
私はImagesControllerとインデックスのビューを持って、そのビューには画像の親指が含まれています。 ImageIDイメージタグのname属性に格納します。親指の画像上のユーザーのクリックが、私はこのjQueryの関数を呼び出すとき:スマートな方法で画像のプレビューを作成/改善する

<div id="bigWrap" style="background: #000; position: fixed; top: 0; left: 0; width: 100%; 
    height: 100%;"> 
    <div id="leftPage" style="width: 100%; height: 100%; background: #000; float: left; 
     text-align: center; position: relative;"> 
     <img id="imgDis" src="@Url.Content("~/" + Model.Path)" alt="@Model.MediaId" 
     style=" max-width: 90%; 
       max-height: 90%; " /> 
     <div style="position: absolute; top: 1%; right: 0px;"> 
      <input id="closeImage" type="image" src="btnClose.png" 
       onclick="$('#bigWrap').remove(); $('body').css('overflow', 'auto');" /> 
     </div>  
      <div style="position: absolute; top: 45%; right: 0px;"> 
      @using (Html.BeginForm("Next", "Images", FormMethod.Post, new { id = "nextImage" })) 
      {  
       @Html.HiddenFor(a => a.MediaId); 
       @Html.HiddenFor(a => a.Path); 
       <input id="btnNext" type="image" src="btnNext.png" /> 
      } 
     </div> 
    </div> 
</div> 

nextユーザーがボタンをクリックして、私は呼ん:

$('.imageThumb').live('click', function (e) { 
    e.preventDefault(); 

    $.ajax({ type: "POST", 
     url: '@Url.Content("~/Images/Show")', 
     data: "imgId=" + $(this)[0].name, 
     success: function (d) { 
      $(document.body).append(d); 
      $(document.body).css("overflow", "hidden"); 
     } 
    }) 
}); 

この表示ビューでは、画像選択した表示フルスクリーンブラウザビューで

$(function() { 
    $('#nextImage').submit(function() { 
     $.ajax({ 
      url: this.action, 
      type: this.method, 
      data: "m_id=" + $('#imgDis').attr('alt'), 
      beforeSend: function (xhr) { 
       $('#bigWrap').empty(); 
      }, 
      success: function (result) { 
       $('#bigWrap').prepend(result); 
      } 
     }); 
     return false; 
    }); 
}); 

次のActionMethodは、新しいモデル(画像)と同じShowビューを返します。

[HttpPost] 
      public ActionResult Next(int m_id) 
    ... 

return View("Show", model); 

は今、私はこのアプローチを持っている問題は次のとおりです。
親指の画像上のユーザーのクリックが表示されますが、URLがまま

  1. http://localhost:xxxx/Images
  2. 次のボタンのURLをクリックするがまだ同じです。
  3. これは、画像/インデックスのときのみ機能します。私はhttp://localhost:xxxx/Images/Show?imgId=47のようなURLの変更(jqueryのコール・ショーアクションから)同じ機能を持つ他のビュー

から画像を開く 場合は、次のボタンは、まだ何も変わらないと私はビューを表示閉じるとき、私はブラウザに空のページを得ました。

私がここで作ったのは、ユーザーがインデックスページの画像を見て、ユーザーがURLに興味がない場合にはっきりと動作しました。しかし、私はこれを変更したいが、私はここで立ち往生している。だから何をすべきか、何を修正するか、何を変えるかは大歓迎です。

おかげ

あなたは、私はあなたが何をしたいのかを正確にやっているさまざまなプラグインの束については、以下のリンクを見て取る... jQueryプラグインを使用することをお勧めしますゼロから始めるといいです場合
+0

はなぜこれを行うjQueryプラグインを使用していませんか? – c0deNinja

答えて

2

私は同意します。なぜあなたは再び車輪を発明すべきですか?そこには多くの良いプラグインがあります。私のお気に入りはもちろんFancyboxです。それは素晴らしいUIを持っています...チェックthese demos。私は敢えて言って、それはそこで最もダウンロードされたライトボックス/モーダルボックスです。 loading images from AJAXchange the background colorなどの異なるシナリオの良い例もあります

、など

+0

FancyBoxを使用したい場合、イメージの右側にdivを追加し、そのdivにコメントを読み込むような方法でカスタマイズすることはできますか? – 1110

+0

このようなhttp://picssel.com/playground/jquery/fancyboxALAfacebook_26Mar12.html – JFK

+0

はい:)まったく同じように – 1110

2

これはあなたを助ける必要があります。

http://www.aspphotogallery.net/mvcphotogallery/Demo 

またはサーバー側の処理のため、この1 http://imageresizing.net/

乾杯 Parminder

0

ような問題点を考慮すると:

1,2 - もちろんのURLは変更されません、あなた以来AJAXを使用しています.AJAX経由で何かを取得した場合、ブラウザのURLは自動的に変更されません。成功したAjax呼び出し後に変更する必要があります

3 - Showアクションをどのようにして正確に呼び出すかについて、より多くの情報を提供する必要があります。あなたは、あなたがあなたのショーアクションに新しいhttp getリクエストを出すので(そして、ブラウザがショーアクションの結果だけを得られることを期待しているので)あなたが説明した結果を得ているようですので、イメージを閉じた後にページ上に他に何もないので、空のページ

これらの問題を克服することができます。私はあなたが実際に既存のソリューション(jQueryプラグインかナゲットパッケージか)をこの問題のために使用することを検討すべきだと考えています。

+0

実際には、URLのハッシュフラグメントのみを変更している限り、リロードせずにURLを変更できます。 mypage.com/gallery.aspxはmypage.com/gallery.aspx#/photo/3617/beach_vacation/に変更することができます。これはAJAXの重いアプリケーションでは非常に一般的です.FBとG +が写真システムをどのように実行するかです。これは、ajaxがロードされたページのURLを変更するだけでなく、ロードするJSコードをトリガーするハッシュタグを変更することで、ブラウザーの前方/後方のナビゲーションが正しく機能するように、ほとんどのブラウザーに履歴オブジェクトを格納させます正しいajaxコンテンツ – Brian

+0

あなたは完全に正しいです、訂正していただきありがとうございます。 – Hari

関連する問題