C# ASP.NET标识用户名(如何添加您自己的验证)?
默认情况下,此属性本身是否有任何验证?比如最大长度,等等。?如果有,在哪里可以找到C# ASP.NET标识用户名(如何添加您自己的验证)?,c#,asp.net,asp.net-mvc,asp.net-identity,C#,Asp.net,Asp.net Mvc,Asp.net Identity,默认情况下,此属性本身是否有任何验证?比如最大长度,等等。?如果有,在哪里可以找到 我这样问是因为我打算覆盖UserName属性以添加更多验证。或者我应该在每个ViewModel中添加验证吗?您可以只添加一个模型/ViewModel来处理这个问题 public class LoginViewModel { [Required(ErrorMessage="*")] [StringLength(20, MinimumLength=5)] public string UserN
我这样问是因为我打算覆盖
UserName
属性以添加更多验证。或者我应该在每个ViewModel
中添加验证吗?您可以只添加一个模型/ViewModel来处理这个问题
public class LoginViewModel
{
[Required(ErrorMessage="*")]
[StringLength(20, MinimumLength=5)]
public string UserName { get; set; }
[DataType(DataType.Password)]
public string Password { get; set; }
}
这样,在您的视图中,您可以通知用户长度等不匹配。
查看DataAnnotations
编辑
这就是你想做的吗?我还没有测试过这个代码
public class ApplicationUser : IdentityUser
{
public string UserName
{
get;
set
{
//your validation here
}
}
}
我相信,实施更改的最佳方式是在核心,即在模型应用程序用户级别
modelBuilder.Entity<ApplicationUser>().Property(t => t.Name).HasMaxLength(10);
modelBuilder.Entity().Property(t=>t.Name).HasMaxLength(10);
通过这种方式,数据库与视图验证同步,并且未来的控制器结构正确。为什么不向模型/视图模型添加数据批注?我正在尝试这样做,但我不知道是否已经存在一些
数据批注?如果有,我想知道他们是谁,这样我就可以在UserName
的override属性中再次添加它们。我想我将创建一个ViewModel
,所有其他人都将从中继承自定义的UserName
属性。我已经编辑了我的答案。但是接下来我必须将所有DataAnnotations
复制到我为用户提供的每个ViewModel
。如果我可以在扩展IdentityUser
类的模型上这样做,那将是非常理想的。。。但是您必须覆盖用户名
属性。因为一个已经存在于IdentityUser
类中,或者IdentityUser
继承的一些类中。但我担心的是,如果我重写该属性,一些DataAnnotations
/验证将丢失。这就是问题所在。我不知道在默认情况下,属性UserName
是否有一些验证/DataAnnotations
。看起来很有希望。:)在您的案例中,modelBuilder
是什么?dbcontext?modelBuilder是使用Fluent API
从dbcontext派生的类的onModelCreating方法中DbModelBuilder的参数名称。您知道如何使用DataAnnotations
,而不从父类(IdentityUser
)中删除DataAnnotations
)吗?只是附加你自己的?嗯。。。。编写自定义属性会有帮助吗?我不这么认为。。。因为我仍然需要覆盖基属性。我想我必须用Fluent的API来做。谢谢