far*_*man 1 c# linq json entity-framework ef-code-first
这是我的User模型类:
public class User
{
public int Id { get; set; }
[Required]
[MaxLength(100)]
public string FullName { get; set; }
[Required]
[MaxLength(30)]
[Remote("IsUsernameExists", "Home", HttpMethod = "Post")]
public string UserName { get; set; }
[Required]
[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$"]
public string Email { get; set; }
[Required]
[StringLength(maximumLength: 18, MinimumLength = 8)]
public string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是控制器IsUsernameExists中的方法Home
public JsonResult IsUsernameExists(string UserName)
{
return Json(!db.Users.Any(x => x.Username == UserName), JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用。任何进一步的帮助将不胜感激!
Unique您可以使用 BothDataAnnotation和来创建模型属性,FluentApi如下所示:
[Required]
[StringLength(30)]
[Index("Ix_UserName",Order =1,IsUnique =true)]
public string UserName { get; set; }
Run Code Online (Sandbox Code Playgroud)
在实体框架 >= 6.2 中,
在DbContext:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>().Property(u => u.UserName).HasMaxLength(30);
modelBuilder.Entity<User>().HasIndex(u => u.UserName).IsUnique();
}
Run Code Online (Sandbox Code Playgroud)
在实体框架 < 6.2 中
在DbContext:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>().Property(t => t.UserName).HasMaxLength(30)
.HasColumnAnnotation(IndexAnnotation.AnnotationName, new IndexAnnotation(new IndexAttribute("Ix_UserName"){IsUnique = true}));
}
Run Code Online (Sandbox Code Playgroud)
请记住:有了Index属性,您还必须使用StringLength属性。
为了使RemoteAttibute工作正常进行,请按如下方式编写您的 RemoteAttibute属性UserName:
[Required]
[StringLength(30)]
[Index("Ix_UserName",Order =1,IsUnique =true)]
[Remote("IsUserNameExist", "Home", AdditionalFields = "Id", ErrorMessage = "User Name already exists")]
public string UserName { get; set; }
Run Code Online (Sandbox Code Playgroud)
然后IsUserNameExist方法如下HomeController:
public JsonResult IsUserNameExist(string UserName, int? Id)
{
var IsUserNameExists = db.Users.Any(x => x.UserName== UserName && x.Id != Id);
return Json(!IsUserNameExists, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
最后确保您的视图包含以下jQuery文件:
<script src="~/Scripts/jquery-version.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
现在一切都应该正常了!
| 归档时间: |
|
| 查看次数: |
4082 次 |
| 最近记录: |