2014-07-07 69 views
0

我得到了我應該打我的方法,這個jQuery(感謝用戶@Saranga):jQuery的負載不打我的方法

$(".photography-image").click(function() { 
    e.preventDefault(); 
     $("<div></div>") 
      .addClass("dialog") 
      .appendTo("body") 
      .dialog({ 
       close: function() { $(this).remove(); }, 
       modal: true, 
       height: 500, 
       width: 500 
      }) 
      .load("/Home/EditPhoto?id=" + $(this).data("imgId")); 

    }); 

這是它應該是匹配的方法:

public ActionResult EditPhoto(string id) 
     { 
      var photo = RavenSession.Load<ContentPage>(id) as Photography; 

      return PartialView("_editPhoto", photo); 

     } 

下面是一些相關的觀點:

@foreach (var item in Model.Photographys) 
         { 
          <li class="span3" style="text-align: center"> 

           <div class="thumbnail thumbnail-1"> 

            <h3 style="margin-bottom: 10px;">@item.Name</h3> 

            <div class=""><div class=""><img src="@item.ImgUrl" alt="" class="photography-image" data-imgid="@item.Id" style="visibility: visible; opacity: 1;"></div></div> 

           </div> 

          </li> 
         } 

當我把一個斷點的方法,然後單擊應trigge圖像該方法什麼也沒有發生,對此有什麼想法? 謝謝!

路線:

routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{xid}", 
       defaults: new { controller = "Home", action = "Index", xid = UrlParameter.Optional } 
      ); 
+0

可以從routeconfig添加路由規則? – ps2goat

+0

更新了,是嗎? – user2915962

+0

你用$ .ready(...)包裝了這個嗎? –

回答

3

的問題是在e.preventDefault();

您不必將「e」定義爲事件。

正如我所看到的,沒有定義元素的onclick,刪除e.preventDefault();,它會工作。

+0

工作!謝謝! =) – user2915962

0

通行證 「E」 像這樣的功能:

$( 「.photography圖像」)。點擊(函數(Ë){

1

這裏是跟蹤多一點背景這些類型的問題,很少有比當你靠不與您的合作。縮小問題範圍的框架,可以對解決問題非常有幫助的更令人沮喪的。這裏是我使用的步驟:

  1. 看看你的瀏覽器的JavaScript控制檯。是否有任何錯誤可能會阻止後面的代碼執行?

  2. 在其導航日誌中查看瀏覽器活動(我更喜歡Webkit調試器 - Chrome或Safari)。瀏覽器是否真的發送了網絡請求?

  3. 網絡請求接收到什麼響應?

  4. 參數名稱是否與導航日誌中的url和action方法的簽名匹配?他們匹配現有的路線嗎?

  5. 如果是這樣,服務器上是否有任何錯誤記錄?

  6. 登錄使用全局屬性您的要求。見DebugInfoAttribute單程來跟蹤服務器看到。

    public override void OnResultExecuted(ResultExecutedContext filterContext) 
    { 
        var browser = filterContext.HttpContext.Request.Browser; 
        filterContext.HttpContext.Response 
         .Write(string.Format(_outputFormat, 
           HttpContext.Current.Request.ServerVariables["SERVER_NAME"], 
           String.Format("{0}({1})",browser.Browser,browser.Version), 
           filterContext.RouteData.Values["controller"], 
           filterContext.RouteData.Values["action"], 
           _startWatch.ElapsedMilliseconds)); 
    } 
    

在這種情況下,e.preventDefault();會在JavaScript控制檯中顯示了。正如所接受的答案所示,您的問題將在第一步中解決。採用系統化的方法這樣才能大大有助於給你的攻擊計劃消除沮喪很長的路要走。希望能幫助到你!

+0

這些都是好的提示!我會在稍後收藏! – user2915962