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

Razor Page中PageModel的OnPost方法验证失败时如何触发显示模态框

Razor Page 验证错误后显示模态框实现方案

以下是两种常用的无额外依赖实现方式,优先推荐第一种:

方案1:PageModel新增属性绑定(推荐)

原理是通过PageModel的公共属性传递显示标识,视图渲染时直接根据标识控制模态框状态

步骤1:修改PageModel代码

首先在你的PageModel类中新增一个布尔类型的公共属性:

// 新增属性,默认不显示模态框
public bool ShowAddUserModal { get; set; } = false;

public IActionResult OnPostAddUser()
{
    if (ModelState.IsValid)
    {
        if (AddUserInput == null)
        {
            ModelState.AddModelError("AddUserInput", "Please enter an email");
            UsersonHearingList = HttpContext.Session.GetObjectFromJson<List<UsersModel>>("UsersonHearingList");
            // 给属性赋值,标记需要显示模态框
            ShowAddUserModal = true;
            return Page();
        }
    }
    else
    {
        return RedirectToPage("/Shared/Error");
    }
    // 其他业务逻辑
    return RedirectToPage();
}

步骤2:修改Razor视图控制模态框显示

两种修改方式二选一即可:

  • 方式A:直接控制模态框的style属性
<!-- 把原来的模态框div的style改成动态渲染 -->
<div class="modal" tabindex="-1" role="dialog" id="AddUserForm" style="display:@(Model.ShowAddUserModal ? "block" : "none")">
  • 方式B:页面加载时调用已有的显示方法(更适配你现有js代码)
    在页面的script标签末尾新增以下代码:
window.addEventListener('load', function() {
    // 后端标记需要显示时调用现有显示方法
    if(@Model.ShowAddUserModal.ToString().ToLower()) {
        ShowAddUserForm();
    }
});

方案2:TempData传值(适配重定向场景)

如果后续有重定向后仍要显示模态框的需求,可以用TempData存储标识,用法和方案1类似:

  1. PageModel中赋值:TempData["ShowAddUserModal"] = true;
  2. 视图中判断:
@if(TempData["ShowAddUserModal"] as bool? == true)
{
    <script>
        window.addEventListener('load', ShowAddUserForm);
    </script>
}

注意事项

如果你使用的是Bootstrap等框架的模态框组件,不要直接修改display属性,调用框架提供的显示方法即可,比如Bootstrap的用法是$('#AddUserForm').modal('show')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 17:30:02