当模型无效时,使用asp.net core返回到视图内的部分视图,并显示错误消息

2024-04-30

我有一个模态引导程序。我想显示引导模式的验证错误。但是,当我将模型留空并单击提交按钮时,它只是被视为独立页面。

部分视图:

  @model WebApplication1.Models.Book

<form asp-controller="Home" asp-action="AddBook"
  data-ajax="true" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#frmaddbook">

<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
        <span aria-hidden="true">&times;</span>
    </button>
    <h4 class="modal-title" id="myModalLabel">Header of Modal</h4>
</div>

<div class="modal-body form-horizontal" id="frmaddbook  ">

    <span class="alert-danger">
        @Html.ValidationSummary()
    </span>

    <div class="row">
        <div class="form-group">
            <label asp-for="BookName" class="col-lg-3 col-sm-3 control-label"></label>
            <div class="col-lg-6">
                <input asp-for="BookName" class="form-control" />
                <span asp-validation-for="BookName" class="text-danger"></span>
            </div>
        </div>

        <div class="form-group">
            <label asp-for="BookDescription" class="col-lg-3 col-sm-3 control-label"></label>
            <div class="col-lg-6">
                <input asp-for="BookDescription" class="form-control" />
                <span asp-validation-for="BookDescription" class="text-danger"></span>
            </div>
        </div>
    </div>
</div>


<div class="modal-footer">
    <input type="submit" class="btn btn-primary" value="Submit" />
</div>

索引视图:

<div class="panel panel-primary">
<div class="panel-body">
    <div class="btn-group">
        <a class="btn btn-primary marginbutoon" id="showBookgroup" data-toggle="modal" asp-action="AddBook"
           data-target="#modal-book">
            <i class="glyphicon glyphicon-plus"></i>
            Add Book
        </a>
    </div>
</div>

我在索引视图顶部使用这个库:

  1. jquery.unobtrusive-ajax.min.js
  2. jquery.validate.unobtrusive.min.js

并在索引视图的底部使用:

  <script src="~/js/book-index.js"></script>

书索引.js:

(function ($) {
function Home() {
    var $this = this;

    function initilizeModel() {
        $("#modal-book").on('loaded.bs.modal', function (e) {

        }).on('hidden.bs.modal', function (e) {
            $(this).removeData('bs.modal');
        });
    }
    $this.init = function () {
        initilizeModel();
    }
}
$(function () {
    var self = new Home();
    self.init();
})

}(jQuery))

控制器:

     [HttpGet]
    public IActionResult AddBook()
    {
        var b = new Book();

        return PartialView("_AddBook", b);
    }



    [HttpPost]
    [ValidateAntiForgeryToken]
    //[HandleError]//not in core
    public IActionResult AddBook(Book model)
    {
        if (ModelState.IsValid)
        {
            return RedirectToAction("Index");
        }

        return PartialView("_AddBook", model);
    }

Model :

public class Book
{

    [Key]
    public int BookId { get; set; }

    [Display(Name = "Book Name :")]
    [Required(ErrorMessage = "Enter Book Name Please ")]
    public string BookName { get; set; }


    [Display(Name = "Book Description")]
    [Required(ErrorMessage = "Enter Book Description Please ")]

    public string BookDescription { get; set; }
}

我的代码如上所示。如何在模态部分视图中显示验证错误?


您可以设置Id形式为data-ajax-update表单的属性值,它是ajaxified的。当从 ajax 调用收到结果时,该值将用作 jQuery 选择器。

@model Book
<form asp-controller="Home" asp-action="AddBook" id="myform"
      data-ajax="true" data-ajax-method="POST"
                                 data-ajax-mode="replace" data-ajax-update="#myform">

    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
        <h4 class="modal-title" id="myModalLabel">Add Book</h4>
    </div>

    <div class="modal-body form-horizontal" id="frmaddbook  ">

        <span class="alert-danger">
            @Html.ValidationSummary()
        </span>

        <div class="row">
            <div class="form-group">
                <label asp-for="BookName" class="col-sm-3 control-label"></label>
                <div class="col-lg-6">
                    <input asp-for="BookName" class="form-control" />
                    <span asp-validation-for="BookName" class="text-danger"></span>
                </div>
            </div>
        </div>
    </div>
    <div class="modal-footer">
        <input type="submit" class="btn btn-primary" value="Submit" />
    </div>
</form>

现在,当您提交表单并且模型状态验证失败时,操作方法代码将返回部分视图结果,其中包含验证错误消息(由验证助手生成)和jquery.unobtrusive-ajax.js库代码将替换(因为我们指定了data-ajax-mode="replace") jquery选择器结果的内容#data-ajax-update(表单标签及其内部内容)以及从服务器返回的响应。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当模型无效时,使用asp.net core返回到视图内的部分视图,并显示错误消息 的相关文章

  • 使用 ASP.NET 控件而不进行数据绑定

    看来我使用 ASP NET 数据绑定太久了 以至于忘记了一些基础知识 我正在 ASPX 页面中动态创建一个表 无需数据绑定 foreach XXX x in TTTT gt tr td td tr
  • 如果 mVC 中不存在该 url,则重定向到页面未找到页面

    如果 url 不存在 我需要将用户重定向到未找到页面 如果用户复制网址并将其粘贴到浏览器上 页面将显示找不到页面的方法 在这我需要将用户重定向到页面未找到页面 看看这个 如何在 ASP NET MVC 中正确处理 404 https sta
  • 将 ninject 与 Ninject.Web.Api 用于 Web Api 2 一起使用在 ASP.NET MVC 5 中不起作用

    我正在开发一个 Asp NET MVC 项目 我的项目也有 web api 我正在使用 ASP NET MVC5 和 Web Api 2 以及 Visual Studio 3 我正在使用 ninject 进行依赖项注入 我知道 ninjec
  • 使用 Automapper 映射列表

    我有课程 public class Person Props here public class PersonViewModel Props here 然后是清单 List
  • 相对于路径匹配路由

    我想要任何以以下结尾的网址 templates filename 使用路由属性映射到特定控制器 例如 public class TemplateController Controller Route templates templateFi
  • 单击按钮时增加 ASP.net 中的变量

    我是 ASP NET 新手 我正在使用 VB net 创建一个 ASP net 网站 所以这是我的问题 Dim myCounter as Integer 0 Protected Sub Button1 Click ByVal sender
  • TransactionScope 是否需要开启 DTC 服务?

    根据我的阅读 为了在 NET 中使用 TransactionScope 您需要运行 Windows 中的分布式事务协调器服务 我有那个服务关掉 并且我的应用程序似乎运行相同并且回滚事务没有问题 我错过了什么吗 它如何能够发挥作用呢 我正在运
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • ASP.NET MVC 中的经典 ASP (C#)

    我有一个应用程序想要 最终 转换为 ASP NET MVC 我想要进行全面的服务升级 到 ASP NET 但想要使用当前的 ASP 内容来运行当前的功能 这样我就可以在对新框架进行增量升级的同时升级小部分 该站点严重依赖于不太成熟的 VB6
  • 我的 Razor 视图中出现奇怪的自动命名空间导入

    今天我注意到 例如 System 和 System Web Security 已导入到我的所有 razor 视图中 尽管我没有主动导入它们 我检查了 using指令 web config 编辑 也是全局 web config 添加全局导入
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 单击关闭按钮后不显示 Google 一键登录 UI

    我正在尝试按照本指南使新的谷歌一键登录工作 https developers google com identity one tap web https developers google com identity one tap web
  • 会话过期时将部分视图重定向到登录页面

    是否有一种简单的方法可以在会话过期后将整个页面 而不仅仅是部分视图 重定向到登录页面 我已尝试以下解决方案 但无法使其工作 Net MVC Partial View 会话过期时加载登录页面 https stackoverflow com q
  • 在 ASP.NET 中实现“记住我”功能

    实施的最佳方式是什么 remember me ASP NET 网站上的功能 我应该使用自定义cookie还是有更简单的方法 您是否使用内置的AuthenicationASP NET 提供的服务 如果是这样 那就很容易了
  • 运行代码隐藏的表行 onclick 事件

    我继承了一个 ASP NET 项目 该项目的 HTML 设计很糟糕 在一个部分中 tr 标签用标签包裹起来 以允许 单击该行查看信息 功能 代码是 tr
  • aspx 页面中的代码是否会在 Web 应用程序中编译?

    首先我要说的是 如果有人知道一篇谈论这个主题的好文章 请指出我 aspx 页面中的代码 位于 标记之间 是否在 Web 应用程序中进行编译 或者是否将其视为标记 您可以在不重新编译解决方案的情况下更改它 编译是否只编译 cs和designe
  • 重命名 ASP.NET MVC 项目时出错

    我复制了以前的项目并将其重命名 一旦我成功重命名了所有名称空间并且它构建正确 当我运行该应用程序时 出现以下错误 The following errors occurred while attempting to load the app
  • 使用 App Insights 将相关 ID 添加到自动生成的遥测数据中

    我对 Application Insights 非常陌生 我正在考虑将其用于我计划使用 asp net webapi 实现的一组服务 我能够非常轻松地启动并运行基本遥测 右键单击 VS 上的项目 添加应用程序洞察 但随后我遇到了障碍 我计划
  • 运行测试项目时自动启动ASP.MVC项目

    我正在尝试为我的 ASP 网站设置一个测试项目 对于某些测试 我想使用 selenium 来执行端到端测试 因此 我的网站必须运行 以便测试可以访问该网站 运行测试时如何启动我的网站项目 请参考以下链接 我相信这是可能的 但会有点棘手 这些
  • Bootstrap 3 / 显示模式不适用于 javascript 方式

    我用Modal http getbootstrap com javascript modalsBootstrap 3 0 的功能 我有这个代码 a href myNestedContent Open the modal containing

随机推荐