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

ASP.NET MVC如何在Create视图显示自定义成功提示后跳转至Index页

实现方案

核心逻辑是保存成功后先不直接跳转到列表页,先传递成功状态到Create视图,渲染成功提示后通过JS实现延迟自动跳转。


基础实现方案

1. 调整Controller的Create方法

把保存成功后的跳转逻辑替换为返回当前Create视图,同时传递成功标记:

public ActionResult Create([Bind(Include = "Id,SuppName,Pay_Method,Status,Create_By,Create_Date")] M_Supplier m_Supplier)
{
    if (ModelState.IsValid)
    {
        m_Supplier.Create_By = int.Parse(((System.Security.Claims.ClaimsIdentity)User.Identity).FindFirst("UserId").Value);
        m_Supplier.Status = true;
        m_Supplier.Create_Date = DateTime.Now;

        db.M_Supplier.Add(m_Supplier);
        db.SaveChanges();

        // 传递成功标记到视图
        ViewBag.SaveSuccess = true;
        return View(m_Supplier);
    }
    return View(m_Supplier);
}

2. 修改Create视图代码

在Create视图中添加成功提示和延迟跳转逻辑:

@if (ViewBag.SaveSuccess == true)
{
    <div class="alert alert-success alert-dismissible">
        <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
        <strong><i class="fa fa-check-circle" aria-hidden="true"></i> 记录添加成功,2秒后将自动跳转到列表页</strong>
    </div>
    <!-- 延迟跳转脚本,2000为停留毫秒数,可自行调整 -->
    <script>
        setTimeout(function(){
            window.location.href = '@Url.Action("Index")';
        }, 2000);
    </script>
}

优化方案(避免刷新重复提交表单)

上面的基础方案存在用户刷新页面重复提交表单的问题,可通过TempData+PRG模式优化:

1. 调整Controller代码

// Get请求访问Create页的方法
[HttpGet]
public ActionResult Create()
{
    return View();
}

// Post提交表单的方法
[HttpPost]
public ActionResult Create([Bind(Include = "Id,SuppName,Pay_Method,Status,Create_By,Create_Date")] M_Supplier m_Supplier)
{
    if (ModelState.IsValid)
    {
        m_Supplier.Create_By = int.Parse(((System.Security.Claims.ClaimsIdentity)User.Identity).FindFirst("UserId").Value);
        m_Supplier.Status = true;
        m_Supplier.Create_Date = DateTime.Now;

        db.M_Supplier.Add(m_Supplier);
        db.SaveChanges();

        // 用TempData存成功标记,TempData仅可读取一次
        TempData["SaveSuccess"] = true;
        // 重定向到Get的Create方法,避免重复提交
        return RedirectToAction("Create");
    }
    return View(m_Supplier);
}

2. 修改Create视图判断逻辑

@if (TempData["SaveSuccess"] != null && (bool)TempData["SaveSuccess"] == true)
{
    <div class="alert alert-success alert-dismissible">
        <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
        <strong><i class="fa fa-check-circle" aria-hidden="true"></i> 记录添加成功,2秒后将自动跳转到列表页</strong>
    </div>
    <script>
        setTimeout(function(){
            window.location.href = '@Url.Action("Index")';
        }, 2000);
    </script>
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:39:02