我正在建立一个汽车销售项目,每当输入错误的用户名或密码时,我都想要一个错误页面。
我尝试使用[HandleError]属性,现在尝试使用Membership.ValidateUser。我对应该使用哪一个感到有些困惑,我知道HandlerError属性是针对特定错误的。
[HttpPost]
public actionResult Login(User user)
{
using (CarsDBEntities db = new CarsDBEntities())
{
var usr = db.Users.Single(u => u.Email == user.Email && u.Password == user.Password);
if (usr != null)
{
Session["UserId"] = usr.UserId.ToString();
Session["Email"] = usr.Email.ToString();
Session["FirstName"] = usr.FirstName.ToString();
Session["LastName"] = usr.LastName.ToString();
return RedirectToaction("LoggedIn");
}
if (!Membership.ValidateUser(usr.Email,usr.Password))
{
ModelState.AddmodelError(string.Empty,"The user name or password is incorrect");
return View(user);
}
return View();
}
}
这是我的观点
@model Car_Sales.Models.User
@{
ViewBag.Title = "Login";
}
<h2>Login</h2>
@using (html.beginform())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>User</h4>
<hr />
@Html.ValidationSummary(true,"",new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Email,htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Email,new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationmessageFor(model => model.Email,new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Password,htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Password,new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationmessageFor(model => model.Password,new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Login" class="btn btn-default" />
</div>
</div>
</div>
}
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
我希望它会显示一个错误,告诉用户他/她输入了错误的凭据。