我正在使用标准MVC成员身份验证的变体。
鉴于我的模型有:
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
视图有:
<div class="form-field">
@Html.EditorFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</div>
如果我选择了用户名字段,则验证消息会正确显示“需要用户名字段。”。
我需要的是,如果用户输入的用户名无法在ActionResult中执行进一步的验证,我想显示自定义验证消息。
一个例子可能是用户输入了已登录系统的用户名(只能在提交时检查),因此ValidationMessage应显示“用户已通过工作站xyz登录”等内容。
我想在Razor MVC 4中使用CustomValidationAttribute的一个很好的例子是最好的,因为我相信这是唯一可行的方法。唯一的问题是,这似乎是客户端验证。就我而言,我只想要服务器端。
答案 0 :(得分:2)
进一步的搜索显示我正在咆哮错误的树。对于自定义服务器端验证消息,只需执行以下操作:
if (result.AlreadyLoggedIn)
{
ModelState.AddModelError("UserName", String.Format("User already logged in via workstation {0}", result.WorkstationName));
}