[英]Validation for unique username not working in ASP.NET MVC4
我试图验证用户名的唯一性,但由于某些原因,它无法正常工作。 我正在以以下方式进行
模型
public class System_User
{
public int Id { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
[Remote("doesUserNameExist", "System_User", HttpMethod = "POST", ErrorMessage = "User name already exists. Please enter a different user name.")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
public bool IsAdmin { get; set; }
}
控制者
我已将以下代码添加到我的System_User控制器中
[HttpPost]
public JsonResult doesUserNameExist(string UserName)
{
var user = Membership.GetUser(UserName);
return Json(user == null);
}
视图我具有由mvc生成的默认创建视图,并带有对jquery的必要引用
@model WhiteBoard.Models.System_User
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<table class="userTable">
<tr>
<td>
@Html.LabelFor(model => model.FirstName)
</td>
<td>
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</td>
</tr>
<tr>
<td>
@Html.LabelFor(model => model.LastName)
</td>
<td>
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</td>
</tr>
<tr>
<td>
@Html.LabelFor(model => model.UserName)
</td>
<td>
@Html.EditorFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
</td>
</tr>
<tr>
<td>
@Html.LabelFor(model => model.Password)
</td>
<td>
@Html.EditorFor(model => model.Password)
@Html.ValidationMessageFor(model => model.Password)
</td>
</tr>
<tr>
<td>
@Html.LabelFor(model => model.IsAdmin)
</td>
<td>
@Html.EditorFor(model => model.IsAdmin)
@Html.ValidationMessageFor(model => model.IsAdmin)
</td>
</tr>
<tr>
<td colspan="2">
<input class="btn btn-success" type="submit" value="Create User" />
</td>
</tr>
</table>
}
<div>
<p>
@Html.ActionLink("Back to List", "Index")
</p>
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
}
当我运行该应用程序时,它既未引发异常,也未生效。
我可以知道我在哪里犯错
看起来一个问题是:
return Json(user == null);
如果用户为null,则当您要返回false时,您将返回true,该用户不存在。 更改为
return Json(user != null);
如果这不起作用或==只是一种类型,请在评论中让我们知道您输入的用户名,预期结果是什么以及实际结果是什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.