Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET MVC 5中检查客户端是否已存在用户?_C#_Asp.net_Asp.net Mvc_Asp.net Identity_Client Side Validation - Fatal编程技术网

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

C# 如何在ASP.NET MVC 5中检查客户端是否已存在用户?,c#,asp.net,asp.net-mvc,asp.net-identity,client-side-validation,C#,Asp.net,Asp.net Mvc,Asp.net Identity,Client Side Validation,我使用Visual Studio 2013.4(Visual Studio 2013更新4)创建了一个常规的ASP.NET MVC 5项目,其中包含个人用户帐户身份验证配置。所有的用户注册和登录功能都已经由VisualStudio为我准备好了,并且运行良好 如何在注册页面上实现以下规则的客户端验证:没有已注册的用户具有相同的电子邮件。?您可以使用服务器回调执行客户端验证 1) 将以下方法添加到AccountController: [AllowAnonymous] public async Tas

我使用Visual Studio 2013.4(Visual Studio 2013更新4)创建了一个常规的ASP.NET MVC 5项目,其中包含个人用户帐户身份验证配置。所有的用户注册和登录功能都已经由VisualStudio为我准备好了,并且运行良好

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

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

1) 将以下方法添加到
AccountController

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

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

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

在下面的解决方案中,我添加了一个附加字段以传递给控制器(模型的主键)。 然后在控制器中,我检查主键是否已给出。 如果是这样,我们知道,我们来自更新站点,因为这是我们在模型中已经有ID的唯一情况。最后一步是检查字符串和主键是否相同。如果它们都是,那没关系,因为我们没有更改字符串中的任何内容。如果只有字符串相同,但ID不同,这意味着我们更改了该字符串并将其更改为另一个现有的items字符串,因此返回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; }
[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));
    }
}
控制器:

    [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; }
[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));
    }
}

值得一读的是,这正是我想要的,但它不适用于twitterbootstrapmvc库
@Html.Bootstrap().TextBoxFor(t=>t.Email).Placeholder(“电子邮件地址”).ShowValidationMessage(true)
//如何使用twitterbootstrapmvc hellper lib在客户端验证/调用
@Html.ValidationMessageFor(t=>t.Email)
如果我只想在保存操作时检查用户名,而不想在更新操作时检查用户名,该怎么办。