.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-3 – WSFederationAuthenticationModule.IsSig
- asp.net-mvc-2 – 在调用EditorFor(…)时隐藏公共属性的编辑
- asp.net-mvc – VS2012启用NuGet包恢复消失,缺少
- asp.net – 外键在VS2012 RC中未被识别
- asp.net-mvc – ASP.NET MVC – 从查询字符串中获取对象列表
- asp.net – Web.config加密错误
- asp.net-mvc – 官方的“如何”MVC编辑器/显示模板?
- 在ASP.NET MVC中获取原始请求
- asp.net-mvc – 单元测试中的ViewResult.ViewName属性为空
- 页面存在时的404 – IIS 5,ASP.NET 4.0
- 从ASP.NET应用程序写入IIS日志
- asp.net-mvc-2 – 使用ASP.NET MVC 2 C#4的最佳B
- asp.net-mvc-3 – 剃刀中的部分的默认内容
- asp.net – 从一个区域的操作重定向到“根”区域
- asp.net – 如何从Web应用程序进行高级打印?
- asp.net-mvc – 如何单元测试返回ContentResult的
- asp.net-mvc – 从MVC版本1迁移后,ASP.NET MVC 2
- asp.net-core – 如何使用带有IdentityServer4的
- asp.net-mvc-4 – ASP.NET MVC Web Api无法将Que
- 如何找出我的线程在ASP.NET中停止的原因?
