状态如何.IsValid在asp.net webapi中工作
本文关键字:net webapi 工作 asp IsValid 状态 | 更新日期: 2023-09-27 18:08:13
我是Asp.net的新手。我有一个模型,它有一些属性,比如[Required]
public class UserNamePasswordModel
{
public string UserName { get; set; }
public string Password { get; set; }
[Required]
public string ConfirmPassword { get; set; }
[Required]
public string Email { get; set; }
}
这是我的简单控制器方法
public async Task<IHttpActionResult> Register(UserNamePasswordModel model)
{
if (!ModelState.IsValid)
return BadRequest(ModelState); // debugger is not comming come here.
}
因为我已经在电子邮件和ConfirmPassword上提供了Annotations
,但是当我请求注册终点时,Modelstate.IsValid
应该是false
,但事实并非如此。所以我应该在某个地方添加一些代码来使其工作
我想我得到了我的答案实际上我的模型类是在不同的项目,我刚刚知道,数据注释是不可移植的所以ModelState。IsValid无法看到这些注释,因此每次都返回true。希望能帮到大家。如果想要进行模型状态验证,则使用不同的名称创建相应的模型,并在后一个类中添加注释,例如:-
Model:-在你的可移植类库中
public class AddPasswordModel
{
public string NewPassword { get; set; }
public string ConfirmPassword { get; set; }
}
相同的模型类,但在您的项目中有注释
public class AddPasswordModelServer
{
[Required]
public string NewPassword { get; set; }
[Required]
public string ConfirmPassword { get; set; }
}
现在告诉你的项目AddPasswordModel将要使用哪种元数据,以便我们可以使用注释。现在在Global中。asax类的Application_start()添加以下代码
TypeDescriptor.AddProvider(new AssociatedMetadataTypeTypeDescriptionProvider(typeof(AddPasswordModel),
typeof(AddPasswordModelServer)),
typeof(AddPasswordModel));
现在,您可以在可移植库中的模型上使用data -annotation了。