Eg:
public class RefreshTokenModel
{
/// <summary>
/// access_token
/// </summary>
[Required(ErrorMessage = "access_token can't be empty.")]
public String access_token { get; set; }
/// <summary>
/// refresh_token
/// </summary>
[Required(ErrorMessage = "refresh_token can't be empty.")]
public String refresh_token { get; set; }
}
接口的模型验证写法
public async Task<IHttpActionResult> UserAccessToken([FromBody]RefreshTokenModel token)
{
if(ModeState.isValid){
//FK
}
}
上面写法没错,但是使用的时候会有一个坑:
当Client发起请求的时候,根本没有POST 任何一个参数的时候,ModelState.isValid 为True,token对象为空….
所以这里并不能完全信任Modelstate.isValid,使用token对象,要这样…
public async Task<IHttpActionResult> UserAccessToken([FromBody]RefreshTokenModel token)
{
if(ModeState.isValid&&token!=null){
//FK
}
}
本文探讨了在.NET框架中使用ModelState.IsValid进行模型验证时遇到的一个常见问题。当客户端未发送任何参数时,尽管ModelState仍可能标记为有效,但实际接收到的对象却是空的。文章提供了正确的检查方法,以确保在进一步处理前模型确实已填充。
1183

被折叠的 条评论
为什么被折叠?



