我试图为登录和注册表单添加自定义错误消息。
到目前为止,我有表单来检查是否已经注册了一封电子邮件,如果已经注册,它将会返回
Response.Write("There's already someone with that email")
但问题是这条消息只会出现在网站的顶部。
有没有办法可以在其他地方显示这些错误消息?
我知道在模型中我可以放
[Required(ErrorMessage = "Something here")]
然后只是把视图放在某个地方
@Html.ValidationMessageFor(a =>a.Email)
并在那里显示错误。
我现在的代码是:
[HttpPost]
public ActionResult Register(Registration signingUp)
{
var db = new ShareRideDBEntities();
if (ModelState.IsValid)
{
//find if email is already signed up
var FindEmail = db.tblProfiles.FirstOrDefault(e => e.PROF_Email == signingUp.Email);
//if email is not found up do this
if (FindEmail == null)
{
var Data = db.tblProfiles.Create();
Data.PROF_Password = signingUp.Password;
Data.PROF_Email = signingUp.Email;
db.tblProfiles.Add(Data);
int Saved = db.SaveChanges();
if (Saved != 0)
{
Response.Write("Registration Successful.");
}
else
{
Response.Write("There was an error.");
}
}
else
{
Response.Write("There's already an user with that email.");
return View();
}
}
else
{
Response.Write("Fill all the fields to continue.");
}
return View();
现在,如果我使用现有的电子邮件执行此操作,它将返回"已经是使用该电子邮件的用户。"但它将显示在网站的顶部。
如何将此错误消息显示在其他位置?
我听到了@ Html.Raw()的一些内容,但我对如何使用它感到困惑。
答案 0 :(得分:2)
使用this.ModelState.AddModelError
方法,您可以添加所需的任何自定义错误消息。如果将属性名称指定为键 - 它将由相应的ValidationMessageFor
显示。因此在控制器中而不是直接写入响应:
ModelState.AddModelError("Email", "There's already an user with that email.");
return View();
看看你已经拥有的这一行:
@Html.ValidationMessageFor(a =>a.Email)
会在您放置它的页面的任何部分显示此消息(可能是在电子邮件的字段附近)。