3

我正在使用标准 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 的一个很好的例子是最好的,因为我相信这是它可以工作的唯一方法。唯一的事情是,这似乎是为了客户端验证。就我而言,我只想要服务器端。

4

1 回答 1

2

进一步的搜索表明我在叫错树。对于自定义服务器端验证消息,只需执行以下操作:

if (result.AlreadyLoggedIn)
{
  ModelState.AddModelError("UserName", String.Format("User already logged in via workstation {0}", result.WorkstationName));
}
于 2013-05-15T03:30:53.387 回答