使用Ajax.ActionLink,不是将结果放入div标签中,而是重新加载网页。怎么办?

问题:MVC中使用Ajax.ActionLink后,不是将结果放入div标签中,而是重新加载网页,并将数据结果提供给其他空白网页的顶部。

 

一、程序代码:

1、布局视图中:

2、Index视图中:

 

二、jquery.unobtrusive-ajax.min.js加载

1、脚本已添加:

2、BundleConfig已修改

3、_Layout.cshtml布局视图中已添加@Scripts.Render("~/bundles/jqueryajax")

三、运行情况

以上完成后问题仍未解决!运行如下:

点击click me之后,本来是要替换右上角的标签,可实际情况如下图:

内容是由局部视图反馈的。可以看到地址栏中已经不是原网页了。

 

此前@Scripts.Render("~/bundles/jqueryajax")加到Index视图,也不能解决。

试着添加了

<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>

也不能解决。

 

请教大神帮忙!

你jquery导入有问题

右键点一下检查元素  或者F12 看看浏览器有没有什么样式没加载进来

我猜是和前端没有问题的,估计是你后端的问题了

//比如这个控制器
public class HomeController : Controller{
    //这个方法获得值
   public ActionResult GetValue()
      {
            return JsonResult(new{
                a=1
            });
     }
//这个方法会直接跳转页面的
   public ActionResult Index()
      {
            return View()
     }
}

 

https://www.cnblogs.com/zzgblog/p/5454025.html

你可以到这里面看下,onsuccess这个方法应该是用的方法

而且为什么不直接用<script></script>

初始页面HTML和样式

第二个页面

@zt13502162671

你发的链接里是这样说的:

它指出生成路径只是在原路径后面添加参数。而我的代码生成了另一个路径,见上文

参考一下这个,看有没有帮助  https://bbs.csdn.net/topics/390742477

网上说是问题出在~/Scripts/jquery.unobtrusive-ajax.min.js加载上,可是我把他们的方法都试了,也不起作用。

在Web.Config中也加了<add key="UnobtrusiveJavaScriptEnabled" value="true" />

 

控制台有5个报错

是不是这几个问题造成的,有可能是jquery中的问题吧,怎么解决呀?

这是咋回事?

处理好了,在<head>中添加了

<script type="text/javascript" src="~/Scripts/jquery-3.4.1.js"></script>
<script type="text/javascript" src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>

之前用 @Scripts.Render("~/bundles/jquery")
            @Scripts.Render("~/bundles/jqueryajax")

有问题。

但是又出现了新的问题,局部视图加载了两次:

这里显示正常,只有一遍

 

这里就有问题了,出现了两遍

对了,是设置的问题。InsertionMode = InsertionMode.InsertAfter,应改为InsertionMode.Replace

谢谢!