【问题标题】:asp.net mvc partialview @Ajax.ActionLink doesn't workasp.net mvc partialview @Ajax.ActionLink 不起作用
【发布时间】:2012-02-05 08:56:58
【问题描述】:

我有一个查看页面

我的浏览页面

<div id="beReplaced">
    @Ajax.ActionLink("please click on me to bring the partial view",
                     "PatrialViewToBeCalled",
                     new AjaxOptions()
                        {UpdateTargetId = "beReplaced",
                        InsertionMode = InsertionMode.InsertAfter,
                        HttpMethod="Get",
                        LoadingElementId = "prgress" })
 </div>

我有一个控制器

public PartialViewResult PatrialViewToBeCalled()
{
    var customer = db.Customers.First();

    return PartialView("PartialViewThatMustBeShow",customer);
}   

但是当我点击生成的链接时,它会将我带到一个新页面而不是 将部分视图替换或附加到 div 标签。

有什么问题?

【问题讨论】:

  • 我找到了解决方案。问题是由于 unobtrusive-ajax.min.js 文件损坏造成的。
  • 您应该将此作为解决方案发布并关闭此
  • 关闭是什么意思?我应该如何关闭它?
  • 在下面将您的解决方案发布为答案并将其标记为答案

标签: ajax asp.net-mvc asp.net-mvc-partialview


【解决方案1】:

你可能错过了:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

在主视图中。这告诉主视图识别 ajax 助手。

【讨论】:

    【解决方案2】:

    我找到了解决方案。问题是由于 unobtrusive-ajax.min.js 文件损坏造成的。

    【讨论】:

      【解决方案3】:

      如果你的页面已经加载了 jQuery,为什么不使用简单的 jquery get/load 方法来获取局部视图呢?

      <div id="beReplaced">
        <a href="#" id="lnk1">please click on me to bring the partial view</a>
      </div>
      

      Javascript

      $("#lnk1").click(function(){
      $.get('/controller/PatrialViewToBeCalled', function(data) {
               $('#beReplaced').html(data);
            });
      });
      

      【讨论】:

      • 因为我试图保持我的视图干净并使其尽可能小,而 MVC 中的 Ajax 助手有能力制作复杂的语句。
      • 如果我想保持我的视图干净,我会坚持不显眼的原则。我觉得这种 jQuery 方法比在视图中提供你的 ajax 参数方法要干净得多(我希望只看到 html尽可能多地标记)
      • 可能是因为他想知道如何使用 ActionLink,而不是如何使用标准 jQuery 操作 DOM? ://
      【解决方案4】:

      如果您使用的是 ASP .NET MVC 4,请确保

        @Scripts.Render("~/bundles/jquery")
      

      也在body标签的末尾。

            @Scripts.Render("~/bundles/jquery")
              @RenderSection("scripts", required: false)
          </body>
      </html> 
      

      【讨论】:

        【解决方案5】:

        我一直在研究它太久,认为它不起作用。查看页面源也没有显示任何内容。

        最终,当我在 Firebug 的控制台中看到成功的请求时,我发现它确实有效。它只是在屏幕外显示它。在 Firebug 的 HTML 选项卡中,我终于找到了输出,即使它没有显示在页面源代码中。

        【讨论】:

          猜你喜欢
          • 2014-01-26
          • 1970-01-01
          • 1970-01-01
          • 2019-08-25
          • 1970-01-01
          • 2011-09-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多