状态如何.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,但事实并非如此。所以我应该在某个地方添加一些代码来使其工作

状态如何.IsValid在asp.net webapi中工作

我想我得到了我的答案实际上我的模型类是在不同的项目,我刚刚知道,数据注释是不可移植的所以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了。