Jquery加载没有命中我的方法

时间:2014-07-07 14:19:42

标签: jquery asp.net-mvc

我得到了这个Jquery(感谢用户@Saranga)我应该按我的方法:

$( ".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>
                        }

当我在方法中放置一个断点并单击应触发该方法的图像时,没有任何反应,对此有什么想法吗? 谢谢!

路线:

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

3 个答案:

答案 0 :(得分:3)

问题出在e.preventDefault();

你没有&#34; e&#34;定义为事件。

正如我所看到的,没有为元素定义onclick,删除e.preventDefault();,它将起作用。

答案 1 :(得分:2)

以下是关于追踪这些类型问题的更多背景信息。没有什么比你依赖的框架不与你合作更令人沮丧。缩小问题的范围对解决问题非常有帮助。以下是我使用的步骤:

  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));
    }
    
  7. 在这种情况下,e.preventDefault();会出现在javascript控制台中。从已接受的答案可以看出,您的问题将在第一步得到解决。使用这样的系统方法可以通过为您提供攻击计划来消除挫败感。希望它有所帮助!

答案 2 :(得分:0)

通过&#34; e&#34;这样的功能:

$(&#34; .photography-image&#34;)。click(功能( e ){