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

.Net Core 3.1 使用jQuery Unobtrusive AJAX Post提交后表单未加载新ViewModel问题

问题原因

你当前使用的是异步AJAX提交表单,没有配置AJAX请求成功后的内容更新规则,所以服务器返回的新页面内容没有被替换到当前页面上,自然看不到更新后的数值。你已经添加的ModelState.Clear()是正确的,不需要改动。

解决方案

步骤1:添加更新容器并配置AJAX属性

给你的Razor页面添加承载待更新内容的容器,同时给form标签补充两个Unobtrusive AJAX专属属性,指定异步请求返回内容的更新位置和更新模式:

@model TestApp.ViewModels.EmployeeViewModel
<!-- 新增待更新容器 -->
<div id="updateContainer">
<form method="post"
      data-ajax="true"
      data-ajax-method="post"
      data-ajax-url="@Url.Action("Detail", "Employee")"
      <!-- 新增两个配置项 -->
      data-ajax-update="#updateContainer"
      data-ajax-mode="replace">

    <input asp-for="EmployeeFirstName" />
    <button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>

步骤2:确认静态资源引入正确

确保页面已经按顺序引入了依赖的JS文件,顺序不能颠倒:

<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/jquery-ajax-unobtrusive/dist/jquery.unobtrusive-ajax.min.js"></script>
可选优化

你当前POST接口返回的是完整View,会把页面的其他冗余内容也一起返回,建议把表单部分单独抽为分部视图,POST接口返回分部视图,减少不必要的内容传输:

[HttpPost]
public IActionResult Detail(EmployeeViewModel employeeViewModel)
{
    employeeViewModel.EmployeeFirstName = "Brian";
    ModelState.Clear();
    // 返回单独的表单分部视图
    return PartialView("_EmployeeForm", employeeViewModel);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:39:01