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

ASP.NET Core MVC使用RedirectToAction后视图未刷新怎么解决?

问题原因

你使用$.get()发送的是异步AJAX请求,浏览器的AJAX引擎会自动处理后端返回的302重定向响应,主动请求重定向后的Index地址、拿到对应页面内容,但不会触发当前页面的整页刷新或者DOM内容更新,因此视觉上页面没有任何变化。

解决方法

方案1:替换AJAX为页面跳转(最简方案)

直接修改前端JS逻辑,通过修改window.location触发整页跳转,浏览器会自动识别后端返回的重定向响应完成页面刷新:

function executeInsert() {
    window.location.href = '/Home/Update';
}

方案2:适配AJAX场景,前端手动处理跳转

如果必须保留AJAX请求逻辑,可以修改前后端交互逻辑,前端收到响应后手动触发跳转:

  1. 修改后端Update方法,返回重定向地址而非直接返回302响应:
public IActionResult Update()
{
    return Json(new { redirectUrl = Url.Action("Index", new { name = "Steven", desc="Hello" }) });
}
  1. 修改前端JS逻辑,拿到返回的跳转地址后手动触发页面跳转:
function executeInsert() {
    $.get('/Home/Update', function(res) {
        window.location.href = res.redirectUrl;
    });
}

如果不需要整页刷新,也可以将Index改为返回部分视图,前端拿到视图内容后替换当前页面对应DOM节点实现局部更新。

可选优化

你当前代码中每次请求Index都新建Random实例,短时间内发起多次请求时可能生成重复的随机ID,建议将Random提升为控制器类的全局成员:

public class HomeController : Controller
{
    private readonly Random _random = new Random();

    public IActionResult Index(string name, string desc)
    {
        TestViewModel viewModel = new TestViewModel();
        viewModel.Id = _random.Next(0,7).ToString();
        viewModel.Name = name;
        viewModel.desc = desc;
        return View(viewModel);
    }
    // 其余代码保持不变
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:06:01