C# 无法检查用户名是否存在
我是Stackoverflow的新手,我刚刚开始使用.NETCore,也是我第一次使用identity。我基本上是使用ajax调用控制器来查看用户名是否已经存在。然后我做了一些研究,发现我可以使用下面的RemoteAttribute是我的RegisterViewModelC# 无法检查用户名是否存在,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
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]