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

ASP.NET MVC控制器如何调用Bootstrap模态框展示提交错误?

实现Bootstrap模态框展示表单提交错误的方案

完全可以实现,按下面几步修改即可:

1. 修改控制器逻辑,返回原录入视图并传递错误信息

把原来返回ShowError视图的代码改成直接返回原录入视图,同时把错误信息存入ModelState或者TempData,这样页面不会跳转,还能保留用户之前输入的大部分数据:

if (LocExists(obj.Loc.BName, obj.Loc.LocTId.ToString())) 
{
    // 往ModelState添加错误信息,前端可直接读取
    ModelState.AddModelError("", "该位置名称已存在,请重新输入");
    
    // 注释清空输入的代码,让用户看到之前填写的内容,方便修改
    // obj.Loc.BName = null;
    // obj.Loc.LocTId= 0;

    // 返回你的录入视图(替换成实际视图名称,比如Create/Edit)
    return View("你的录入视图名称", obj);
}

如果习惯用TempData存错误,也可以这么写:

if (LocExists(obj.Loc.BName, obj.Loc.LocTId.ToString())) 
{
    TempData["ErrorMsg"] = "该位置名称已存在,请重新输入";
    return View("你的录入视图名称", obj);
}

2. 在录入视图中添加Bootstrap模态框

在用户填写数据的录入视图里,添加Bootstrap模态框的HTML结构,用来承载错误信息:

<!-- Bootstrap错误提示模态框 -->
<div class="modal fade" id="errorModal" tabindex="-1" aria-labelledby="errorModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="errorModalLabel">操作提示</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        <!-- 显示TempData中的错误 -->
        @if (!string.IsNullOrEmpty(TempData["ErrorMsg"] as string))
        {
            <p class="text-danger">@TempData["ErrorMsg"]</p>
        }
        <!-- 显示ModelState中的所有错误 -->
        @foreach (var error in ViewData.ModelState.Values.SelectMany(v => v.Errors))
        {
            <p class="text-danger">@error.ErrorMessage</p>
        }
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-primary" data-bs-dismiss="modal">确定</button>
      </div>
    </div>
  </div>
</div>

3. 添加JS自动触发模态框

在视图底部添加一段JavaScript,页面加载完成后检查是否有错误信息,若存在则自动弹出模态框:

<script>
    document.addEventListener('DOMContentLoaded', function() {
        // 检查是否存在错误信息
        const hasError = @(!string.IsNullOrEmpty(TempData["ErrorMsg"] as string) || ViewData.ModelState.Any(m => m.Value.Errors.Any()));
        
        if (hasError) {
            // 初始化并显示模态框
            const errorModal = new bootstrap.Modal(document.getElementById('errorModal'));
            errorModal.show();
        }
    });
</script>

注意事项

  • 确保页面已经引入Bootstrap的CSS和JS文件(Bootstrap 5需要同时引入Popper.js)
  • 如果使用Bootstrap 4,模态框初始化代码改为$('#errorModal').modal('show');,需提前引入jQuery

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:14:57