You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core中Ajax调用不生效,局部视图单独渲染问题求解

问题诱因

  • 脚本加载顺序错误:jQuery 是所有 unobtrusive 类库的依赖项,必须优先加载,你当前的脚本顺序是先加载验证unobtrusive库,后加载jQuery,依赖顺序倒置,所有依赖jQuery的脚本都无法正常运行。
  • 未引入Ajax对应的unobtrusive脚本:你引入的jquery.validate.unobtrusive.js是表单验证用的库,不是支持Ajax.BeginForm的Ajax unobtrusive库,就算装了Nuget包,没引入对应脚本也无法触发Ajax提交逻辑,表单会退化为普通同步提交,所以会跳转到新页面渲染局部视图。
  • 服务未注册:AspNetCore.Unobtrusive.Ajax包需要在项目启动时注册服务才能正常工作,未完成注册也会导致Ajax功能失效。

修复步骤

  1. 调整脚本加载顺序,新增Ajax unobtrusive脚本引入,修改_Layout.cshtml中的脚本引用为如下顺序:
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
<script src="~/lib/ajax-unobtrusive/jquery.unobtrusive-ajax.min.js"></script>

如果wwwroot/lib目录下没有ajax-unobtrusive对应的文件,可以通过Visual Studio的「管理客户端库」功能搜索jquery.unobtrusive-ajax安装,或者从Nuget包的静态资源目录拷贝对应文件到项目的wwwroot/lib目录下。
2. 在Program.cs中注册UnobtrusiveAjax服务,在var app = builder.Build();代码行之前添加如下配置:

builder.Services.AddUnobtrusiveAjax();
  1. 测试功能:修改完成后重新运行项目,提交表单后就不会跳转新页面,会直接替换customerInfo节点的内容。

内容的提问来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:48:01