Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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# 无法检查用户名是否存在_C#_Asp.net Core_Asp.net Identity_Asp.net Core Mvc - Fatal编程技术网

C# 无法检查用户名是否存在

C# 无法检查用户名是否存在,c#,asp.net-core,asp.net-identity,asp.net-core-mvc,C#,Asp.net Core,Asp.net Identity,Asp.net Core Mvc,我是Stackoverflow的新手,我刚刚开始使用.NETCore,也是我第一次使用identity。我基本上是使用ajax调用控制器来查看用户名是否已经存在。然后我做了一些研究,发现我可以使用下面的RemoteAttribute是我的RegisterViewModel public class RegisterViewModel { [Required] [StringLength(100, ErrorMessage = "some error", MinimumLe

我是Stackoverflow的新手,我刚刚开始使用.NETCore,也是我第一次使用identity。我基本上是使用ajax调用控制器来查看用户名是否已经存在。然后我做了一些研究,发现我可以使用下面的RemoteAttribute是我的RegisterViewModel

    public class RegisterViewModel
{
    [Required]
    [StringLength(100, ErrorMessage = "some error", MinimumLength = 2)]
    [DataType(DataType.Text)]
    [Display(Name = "Username")]
    [RegularExpression(@"(^[\w]+$)", ErrorMessage = "some error")]
    [Remote("CheckUserName", "Account", HttpMethod = "POST", ErrorMessage = "some error")]
    public string Username { get; set; }
然后在我的控制器里有这个

    public async Task<JsonResult> CheckUserName(string username)
    {
        var user = db.Users.Where(x => x.UserName == username).FirstOrDefault();
        if (user == null)
            return Json(true);
        else
            return Json(false);    
    }
公共异步任务检查用户名(字符串用户名)
{
var user=db.Users.Where(x=>x.UserName==UserName.FirstOrDefault();
if(user==null)
返回Json(true);
其他的
返回Json(false);
}
但我的datacontext总是抛出未设置为对象实例的对象引用,因此我使用了FindByNameAsync标识方法,该方法始终返回null,请参见下文

    public async Task<JsonResult> CheckUserName(string username)
    {
        var user = await _userManager.FindByNameAsync(username);
        //but user is always null ??
    }
公共异步任务检查用户名(字符串用户名)
{
var user=await\u userManager.FindByNameAsync(用户名);
//但是用户总是空的??
}

任何帮助都将不胜感激。

我不知道我到底做了什么,但它现在似乎起作用了。 我补充说


属性,该属性可能已完成此操作。但事实并非如此,它应该抛出一个401错误。无论哪种方式,谢谢大家的帮助。

也许
字符串用户名
需要是
字符串用户名
?您是说
用户名
参数的值是
?如果是,请显示用于生成表单控件的查看代码。@StephenMuecke否从FindBynameAAsync返回的值为空,因此
user
表示数据库中没有记录匹配
username
对象引用未设置为对象的实例
您缺少此处的要点。什么是
null
<代码>数据库或
db.用户
?这可能只是这两个对象中的一个,因为如果集合为空,
FirstOrDefault()
不会引发异常。它将简单地返回
null
,正如您通过代码判断已经知道的那样。很明显,您的数据库存在问题,而不是搜索用户的方式。另外请注意,如果您有一个看不到的空间,那么
==
将不匹配。
    [AllowAnonymous]