首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果ModelState仅在HttpPost中创建,如何在HttpPut中访问它?

在ASP.NET Core中,可以通过使用[FromBody]特性将请求的数据绑定到ModelState中。ModelState是一个包含了请求数据验证结果的对象,它可以在控制器的不同动作方法中共享。

如果ModelState仅在HttpPost中创建,而在HttpPut中需要访问它,可以通过以下步骤实现:

  1. HttpPost方法中,使用[FromBody]特性将请求的数据绑定到ModelState中。例如:
代码语言:txt
复制
[HttpPost]
public IActionResult Create([FromBody] MyModel model)
{
    // 验证模型数据
    if (!ModelState.IsValid)
    {
        // 处理验证失败的情况
        return BadRequest(ModelState);
    }

    // 处理模型数据
    // ...

    return Ok();
}
  1. HttpPut方法中,可以通过手动创建一个新的ModelState对象,并将其与当前的ModelState合并。然后,将请求的数据绑定到新的ModelState中。例如:
代码语言:txt
复制
[HttpPut("{id}")]
public IActionResult Update(int id, [FromBody] MyModel model)
{
    // 创建新的ModelState对象
    var newModelState = new ModelStateDictionary();

    // 合并当前的ModelState到新的ModelState中
    newModelState.Merge(ModelState);

    // 验证模型数据
    if (!newModelState.IsValid)
    {
        // 处理验证失败的情况
        return BadRequest(newModelState);
    }

    // 处理模型数据
    // ...

    return Ok();
}

通过以上步骤,可以在HttpPut方法中访问ModelState,并进行数据验证和处理。请注意,ModelState对象是在每个请求中创建的,并且可以在控制器的不同动作方法中共享和访问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

从头编写 asp.net core 2.0 web api 基础框架 (2)

先看看Model, 其中的Id属性, 一般是创建的时候服务器自动生成的, 所以如果客户端在进行Post(创建)的时候, 它是不会提供Id属性的....加上Controller的Route前缀, 那么访问这个Action的地址就应该是: 'api/product' 后边也可以跟着自定义的路由地址, 例如 [HttpPost("create")], 那么这个...Validation 验证 针对上面的Post方法,  如果请求没有Body, 参数product就会是null, 这个我们已经判断了; 如果body里面的数据所包含的属性在product不存在, 那么这个属性就会被忽略...如果有错误的话, 我们可以把ModelState当作Bad Request的参数一起返回到前台. 我们试试: ? ?...如果使用Product这个Dto的话, 那么包含id属性, 而id属性是不更改的. 但如果你没有针对不同的操作使用不同的Dto, 那么别忘了检查传入Dto的id 要和参数id一致才行.

1.6K80

从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之二 || 后端项目搭建

这里要注意下,关于Https选项问题,有很多小伙伴在以后的接口调用,勾选了这个,但是还是一直使用 http 协议去访问,导致找不到响应的接口地址。...1、是你的项目创建的时候,勾选了 Https 选项,如果你还没有创建,那就可以不要勾选那个 HTTPS选项。...2、如果你的项目已经创建好了,每次访问都是HTTPS的,但是你不想这么做,可以在 launthSettings.json 文件,把sslPort 端口号改成0即可 3、项目整体结构分析 接下来咱们看看这个项目都包含了哪些东西...: 点开Controllers --> ValuesController 文件,你会发现四个方法,并且每个方法也有各自的特性,分别是HttpGet,HttpPost,HttpPut,HttpDelete...加上Controller的Route前缀, 那么访问这个Action的地址就应该是: 'api/product' 后边也可以跟着自定义的路由地址, 例如 [HttpPost("create")], 那么这个

1.1K20
  • 《ASP.ENT Core 与 RESTful API 开发实战》-- (第4章)-- 读书笔记(下)

    }; AuthorRepository.AddAuthor(authorDto); // 返回201 Created 状态码,并在响应消息头中包含 Location 项,的值是新创建资源的...,创建 DTO,在 IBookRepository 接口添加方法,在 BookMockRepository 实现类实现接口方法 namespace Library.API.Models {...ModelState.IsValid) { return BadRequest(ModelState); } BookRepository.UpdateBook...4.8 内容协商 RESTful API 应该根据客户端的需要返回不同格式的数据 客户端指明格式是在其请求消息的消息头中添加 Accept 项,的值是一个 MIME 类型, application.../xml 如果支持返回此格式数据则直接返回,不支持则返回 406 NotAcceptable 状态码 以上过程称为内容协商 ASP.NET Core MVC ,对于不支持的 Accept 类型返回 406

    56120

    【 .NET Core 3.0 】框架之二 || 后端项目搭建

    3、然后创建模板: 这里要注意下,关于Https选项问题,有很多小伙伴在以后的接口调用,勾选了这个,但是还是一直使用 http 协议去访问,导致找不到响应的接口地址。...1、是你的项目创建的时候,勾选了 Https 选项,如果你还没有创建,那就可以不要勾选那个 HTTPS选项。...2、如果你的项目已经创建好了,每次访问都是HTTPS的,但是你不想这么做,可以在 launthSettings.json 文件,把sslPort 端口号改成0即可 3、删除IIS配置,默认使用 kestrel...常用的Http Method有: Get, 查询, Attribute: HttpGet, 例如: '/api/product', '/api/product/1' POST, 创建, HttpPost...加上Controller的Route前缀, 那么访问这个Action的地址就应该是: 'api/product' 后边也可以跟着自定义的路由地址, 例如 [HttpPost("create")], 那么这个

    1.8K20

    Membership三步曲之入门篇 - Membership基础示例

    首先我们在Layout里面加上三个链接:Register, Login, 如果已经登录的话我们就显示用户名和LogOff。    ...如果用户没有登录直接访问/Account/Manage会被跳到/Account/Login要求登录*/ [Authorize] [HttpPost] [ValidateAntiForgeryToken...那我们就来看一下都帮我们搞了一个什么样的数据库。注:这个数据库是Membership帮我们生成的,我之前并没有创建,也就是我们只需要写好连接字符串就可以了。   ...其实ASP.NET已经有一套比较成熟的权限体系,加上的自定义功能基本可以满足我们大多数的需求了。   在我们创建这个MVC站点的时候,VS也为我们配置了权限模块。...就在挨着membership结点的下方:   因为我们这里面的连接字符串与我们的membersihp中用到的是同一个,所以和权限相关的表Roles、UserInRoles也创建到了同一个数据库

    94560

    win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序 VisualStudio创建项目引用项目创建通用结构设置控制器运行网站UWP 连接上传数据

    因为 VisualStudio 的安装是很慢的,如果发现因为自己的网站无法访问,需要代理,可以发邮件给我,我发一个代理给你。...创建项目 现在一起创建三个项目,第一个项目是 UWP 项目,没有什么需要注意,点击创建空白UWP项目就可以。第二个是一个 dotnet standard 项目。...如果完全没有开发过 UWP 程序,那么请看win10 uwp 如何开始写 uwp 程序 - CSDN博客 dotnet standard 创建一个 dotnet standard 可以让多个项目使用,在这里放一些类的定义...} return Ok(roqawzemJajene); } // PUT: api/RoqawzemJajenes/5 [HttpPut...如果刚才的代码有地方没有写对, stringContent 没有添加下面代码 stringContent.Headers.ContentType.MediaType = "application

    1.3K10

    ASP.NET 5系列教程(七)完结篇-解读代码

    HTTP 方法 [HttpGet]、[HttpPost]和[HttpDelete] 属性定义为 controller 动作对应的HTTP 方法 (另外也有[HttpPut] 和 [HttpPatch]...framework 会自动传递实参值到Controller。例如,如果URL为http://localhost/api/todo/42,id的值则为42,这个过程为参数绑定。...而方法规定返回类型为IActionResult。因此,该方法可以返回不同的类型。 如果没有对应ID,则返回HttpNotFound,页面会抛出404 错误。...如果需要使用IIS,在上一步骤更改Debug Target 为 “IIS Express”即可。 这篇文章为本系列文章的最后一篇,感谢大家的关注。...Grunt、Bower开发Web程序 ASP.NET 5系列教程 (六): 在 MVC6 创建 Web API ASP.NET 5系列教程(七)完结篇-解读代码

    1.1K61

    ASP.NET MVC 5 - 给数据模型添加校验器

    您可以在一个地方 (模型类) 以声明的方式指定验证规则,这个规则会在应用程序的任何地方执行。 让我们看看您如何在本电影应用程序,使用此验证支持。...第二个 ([HttpPost]) 方法处理form的请求。第二种Create方法 (HttpPost 版本) 调用 ModelState.IsValid来检查是否有任何的Movie验证错误。...如果您在浏览器禁用了 JavaScript,客户端验证也会被禁用,HTTP POST Create方法会调用 ModelState.IsValid来检查影片是否含有任何验证错误。...下图显示了如何禁用 Internet Explorer 的 JavaScript。 ? ? 下图显示了如何在火狐浏览器禁用 JavaScript。 ?...ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB 7. ASP.NET MVC 5 - 从控制器访问数据模型 8.

    9K70

    .NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

    模型绑定系统: 从各种源(路由数据、表单域和查询字符串)检索数据。 Razor在方法参数和公共属性向控制器和页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型的属性。...students.Add(new Student {Id = item.Key, Name = item.Value}); } return Ok(students); } 启动程序,访问...view=aspnetcore-5.0 Web 应用负责检查 ModelState.IsValid 并做出相应响应 if (!...view=aspnetcore-5.0 特定类型 IActionResult ActionResult 特定类型:最简单的操作返回基元或复杂数据类型( string 或自定义对象类型) IActionResult...浏览器和内容协商 }) .AddXmlSerializerFormatters() // 添加 XML 格式支持 .AddFluentValidation(); 启动程序,添加 XML Headers 访问

    2.5K10

    .NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

    模型绑定系统: 从各种源(路由数据、表单域和查询字符串)检索数据。 Razor在方法参数和公共属性向控制器和页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型的属性。...students.Add(new Student {Id = item.Key, Name = item.Value}); } return Ok(students); } 启动程序,访问...view=aspnetcore-5.0 Web 应用负责检查 ModelState.IsValid 并做出相应响应 if (!...view=aspnetcore-5.0 特定类型 IActionResult ActionResult 特定类型:最简单的操作返回基元或复杂数据类型( string 或自定义对象类型) IActionResult...浏览器和内容协商 }) .AddXmlSerializerFormatters() // 添加 XML 格式支持 .AddFluentValidation(); 启动程序,添加 XML Headers 访问

    2.6K11
    领券