我的程序拥有可以创建项目(行为类似于文件夹)的用户,并且在项目内部用户可以添加文档。 用户可以与其他用户共享项目。
我已经阻止用户可以在同一个项目中两次添加同一个人,但我似乎无法显示我想要的错误消息。
电子邮件具有必需属性,并显示这些错误消息(如果它无效且盒子为空,则都会显示。)
我没有使用ModelState.AddErrorMessage()吗?
这是变量在模型中的方式
[EmailAddress(ErrorMessage ="Please enter a valid email address!")]
[Display(Name = "Email")]
[Required(ErrorMessage = "You must enter an email!")]
public string email { get; set; }
这是我的控制器的一部分
//Prevent double share
List<ProjectModel> userProjects = projectService.getAllProjects(user.email);
foreach(var proj in userProjects)
{
if(proj.name == userService.getProjectByID(urlInt).name)
{
//This is the error message I am trying to display
ModelState.AddModelError(user.email, "This user already has access to this project!");
return View(user);
}
}
userService.share(user.email, urlInt);
return RedirectToAction("../Dashboard/Dashboard");
这是我的观点
@using (Html.BeginForm("Share", "User", FormMethod.Post, new { @class = "add-document-form" }))
{
<div class="add-document-div">
<div class="form-group">
<label for="email" class="control-label">Email address</label>
<br />
@Html.TextBoxFor(m => m.email, new { @class = "form-conrtol" })
<br />
<!--Here is the validation for the email button-->
@Html.ValidationMessageFor(m => m.email, "", new { @class = "text-danger" })
</div>
</div>
<input type="submit" class="btn btn-fab" value="Send invitation" />
}
答案 0 :(得分:1)
您使用ModelState.AddModelError
的重载需要两个参数;要添加错误的model属性的名称,以及实际错误。您需要确保第一个参数是正确的名称。在这种情况下,我假设"email"
。
目前,您只需提供user.email
包含的内容,而不是字段名称。
答案 1 :(得分:0)
这是
的语法ModelState.AddErrorModel("<some form field name>", "<your error message>");
第一个参数是表单字段名称,以便mvc知道绑定错误消息的位置。
ModelState.AddModelError(user.email, "This user already has access to this project!");
正在尝试将错误消息绑定到user.email的值。这在您的表单中不存在。
答案 2 :(得分:0)
要通过控制器为服务器端验证添加错误,您只需要以字符串格式提供密钥名称..所以在您的情况下这应该有效:
ModelState.AddErrorModel("email", "This user already has access to this project!");
return View(user);
请告诉我这是否有帮助!
答案 3 :(得分:0)
事实证明,我只需将user.email
更改为"email"
,就像已经指出的那样。
当时对我不起作用的原因是因为另一个人正在清理我们的ServiceBase并破坏了我与数据库的连接,所以我的表单根本没有发布。
我修复了错误信息后显示。
感谢大家的帮助!