.net – 如何从ModelState键中删除前缀?
例如,有一个Web Api操作方法:
public HttpMessageResponse Post(UserDto userDto) { if (!this.ModelState.IsValid) { return this.Request.CreateErrorResponse( HttpStatusCode.BadRequest,this.ModelState); } // ... } 客户端发送以下请求: HTTP POST: /api/user { "username": "me","password": "Pa$sw0rd" } 并得到回应: HTTP 201/Created: { "message": "Your request is invalid.","modelState": { "userDto.Password": "Your password is too strong." } } 默认情况下,action方法通过使用action方法中使用的参数名前缀模型错误来公开实现细节。如果客户端应用程序在清理模型错误,然后是服务器端代码更改(例如,您用Post(UserDto dto)替换了Post(UserDto userDto))签名时,会重新编码此前缀名称,并且所有客户端应用程序都停止工作。 这就是为什么你需要确保这个前缀在服务器端被删除。问题是如何正确地做,没有使事情复杂化。例如,您可以创建一个自定义序列化程序,并在序列化期间删除这些前缀。但是为了做到这一点,你需要知道模型参数的名称,调用代码可能看起来像这样: public HttpMessageResponse Post(UserDto userDto) { if (!this.ModelState.IsValid) { return this.Request.CreateCustomErrorResponse( HttpStatusCode.BadRequest,this.ModelState,modelName: "userDto"); } // ... } 解决方法
第一部分:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何使用npoi将图像放在一个单元格中
- asp.net-mvc-4 – 添加对System.IdentityModel.Tokens DLL的
- ASP.Net C#MVC5 Razor查看XML站点地图
- 需要在asp.net中以分钟为单位查找音频文件的长度
- asp.net-mvc – asp.net mvc路由:如何使用默认动作,但非默
- asp.net-mvc – AllowAnonymous不能使用自定义Authorizatio
- asp.net – Shutterfly Order API.
- asp.net – viewStateEncryptionMode =“始终”不加密
- asp.net-mvc – scanMap的目的.CallingAssembly,scan.WithD
- asp.net-mvc-4 – 无法解析类型名称:Glass.Mapper.Sc.Pipe
- asp.net – 如何按优先级或按字母顺序对Request.
- asp.net – 应用程序池循环如何影响ASP Net会话状
- .net MVC功能测试
- asp.net-mvc – 在应用程序洞察中设置用户名
- .net – 匹配另一条路线的路线,忽略HttpMethodCo
- asp.net-mvc-3 – 在HttpPost上绑定嵌套模型和MV
- asp.net – 您无权查看此目录或页面. Azure Web
- asp.net-mvc – ASP.NET MVC 3简单可靠的移动设备
- asp.net – 设置debug =“false”时出现“请求超
- asp.net – 为什么TextBox中有ViewState?