我一直在寻找一种直接的方式来提示错误消息,理想情况是弹出窗口(javascript或其他方式)给用户在此表单上登录系统失败:
@model Blog.Models.ViewModels.LoginView
<!DOCTYPE html>
<html>
<body>
@using (Html.BeginForm()) {
<p>Your name: @Html.TextBoxFor(x => x.name) </p>
<p>Your password: @Html.TextBoxFor(x => x.password)</p>
<input type="submit" value="Login" />
}
</body>
</html>
但我发现的大多数例子都在标签上使用了onclick方法。相反,我希望它由此控制器处理:
private BlogModel model = new BlogModel();
[HttpPost]
public ActionResult LoginForm(string name, string password)
{
SysUser user = model.SysUsers.Where(x => x.SysUserName == name).First();
{
if (user != null && user.SysPassword == password)
{
Session["usrn"] = name;
return RedirectToAction("LoginSuccessful", "Users");
}
else
{
//display error//
}
}
答案 0 :(得分:2)
我建议不要使用弹出窗口或警告()对话框。相反,我会使用样式div来显示您的错误消息。如果您正在使用jQuery UI,则可以尝试我的message plugin。由于它使用javascript显示,您可以像这样使用它:
控制器:
[HttpPost]
public ActionResult LoginForm(string name, string password)
{
SysUser user = model.SysUsers.Where(x => x.SysUserName == name).First();
{
if (user != null && user.SysPassword == password)
{
Session["usrn"] = name;
return RedirectToAction("LoginSuccessful", "Users");
}
else
{
ViewBag.LoginError = true;
}
}
}
用jquery-message标记:
<div id="loginError" style="display:none">Login Error...</div>
@if (ViewBag.LoginError == true)
{
<script type="text/javascript">
$("#loginError").message({type:"error"});
</script>
}
如果您愿意,可以不使用jquery-message:
@if (ViewBag.LoginError == true)
{
<div id="loginError" class="error">Login Error...</div>
}