首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查ASP.NET MVC 5中的客户端是否已经存在用户?

如何检查ASP.NET MVC 5中的客户端是否已经存在用户?
EN

Stack Overflow用户
提问于 2015-02-13 17:29:51
回答 2查看 19.7K关注 0票数 8

使用Visual 2013.4 (VisualStudio2013Update4),我创建了一个具有个人用户帐户身份验证配置的常规ASP.NET MVC 5项目。所有的用户注册和登录功能已经由Visual为我搭建了支架,并且工作正常。

如何在注册页面上实现以下规则的客户端验证:没有已经注册的具有相同电子邮件的用户

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-13 17:29:51

您可以使用RemoteAttribute通过服务器回调执行客户端验证。

1)向AccountController中添加以下方法

代码语言:javascript
复制
[AllowAnonymous]
public async Task<JsonResult> UserAlreadyExistsAsync(string email)
{
    var result = 
        await userManager.FindByNameAsync(email) ?? 
        await userManager.FindByEmailAsync(email);
    return Json(result == null, JsonRequestBehavior.AllowGet);
}

2)向Remote类的Email属性添加RegisterViewModel属性:

代码语言:javascript
复制
[Remote("UserAlreadyExistsAsync", "Account", ErrorMessage = "User with this Email already exists")]
public string Email { get; set; }

其中"Account"是服务控制器的名称,"UserAlreadyExistsAsync"是它的操作名。

票数 14
EN

Stack Overflow用户

发布于 2016-02-29 16:03:23

这帮了很多忙。在我的例子中,它是一个表,在那里也可以进行更新。在这种情况下,上面的解决方案不起作用。所以我想分享我对这个案子的解决方案。

在下面的解决方案中,我添加了一个附加字段以传递给Controller(模型的主键)。然后,在控制器中,我正在检查主键是否给定。如果是这样的话,我们知道,我们来自更新站点,因为这是我们已经在模型中有一个ID的唯一情况。最后一步是检查字符串和主键是否相同。如果他们都是,没关系,因为我们没有改变字符串中的任何东西。如果字符串是相同的,而不是ID,这意味着我们更改了字符串并将其更改为另一个现有的项字符串,因此我们返回false。

模型:

代码语言:javascript
复制
    [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; }

控制器:

代码语言:javascript
复制
[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));
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28505294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档