如何检查ASP.NET MVC 5中客户端是否已存在用户?
使用Visual Studio 2013.4 (Visual Studio 2013 Update 4)我创建了一个具有个人用户帐户身份validation配置的常规ASP.NET MVC 5项目。 所有用户注册和登录function已经由Visual Studio支持我,并且工作正常。
如何在注册页面上实现以下规则的客户端validation: 没有已注册的用户使用相同的电子邮件 ?
您可以使用RemoteAttribute通过服务器回调执行客户端validation。
1)将以下方法添加到AccountController
:
[AllowAnonymous] public async Task UserAlreadyExistsAsync(string email) { var result = await userManager.FindByNameAsync(email) ?? await userManager.FindByEmailAsync(email); return Json(result == null, JsonRequestBehavior.AllowGet); }
2)将Remote
属性添加到RegisterViewModel
类的Email
属性:
[Remote("UserAlreadyExistsAsync", "Account", ErrorMessage = "User with this Email already exists")] public string Email { get; set; }
其中"Account"
是服务控制器的名称, "UserAlreadyExistsAsync"
是它的动作名称。
这有很多帮助。 就我而言,这是一张桌子,也可以进行更新。 在这种情况下,上述解决方案不起作用。 所以我想分享我的解决方案。
在下面的解决方案中,我添加了一个附加字段以传递给Controller(模型的主键)。 然后在控制器中我检查是否给出了主键。 如果是这样,我们知道,我们来自更新站点,因为它是我们在模型中已经有ID的唯一情况。 最后一步是检查字符串和主键是否相同。 如果它们都是,那没关系,因为我们没有更改字符串中的任何内容。 如果只有字符串相同而不是ID,则意味着我们更改了字符串并将其更改为另一个现有项字符串,因此我们返回false。
模型:
[Key] [Display(Name = "Idee ID")] public int intIdeaID { get; set; } [Required(ErrorMessage = "Dieses Feld muss ausgefüllt werden")] [Display(Name = "Idee")] [Remote("ideaExists", "TabIdea", HttpMethod = "POST", ErrorMessage = "Es wurde bereits eine Idee mit dieser Bezeichnung erstellt", AdditionalFields = "intIdeaID")] public string strIdea { get; set; }
控制器:
上述就是C#学习教程:如何检查ASP.NET MVC 5中客户端是否已存在用户?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
[HttpPost] public JsonResult ideaExists(string strIdea, int? intIdeaID) { if (intIdeaID != null) { if (db.tabIdea.Any(x => x.strIdea == strIdea)) { tabIdea existingTabIdea = db.tabIdea.Single(x => x.strIdea == strIdea); if (existingTabIdea.intIdeaID != intIdeaID) { return Json(false); } else { return Json(true); } } else { return Json(true); } } else { return Json(!db.tabIdea.Any(x => x.strIdea == strIdea)); } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1012915.html