唯一字段mvc的客户端验证

时间:2013-08-03 21:02:20

标签: entity-framework asp.net-mvc-4 unobtrusive-validation

我需要为我的字段实施唯一的验证检查

[Key]
[Required]
[DisplayName("Tag")]
public string Tag { get; set; }  

此标记已存在错误...

1 个答案:

答案 0 :(得分:14)

您可以使用远程验证规则来实现此目的。将此规则[Remote("IsTagAvailble", "MyController", ErrorMessage = "Tag Already Exist.")]添加到您的代码字段。你的新代码将是

[Key]
[Required]
[DisplayName("Tag")]
[Remote("IsTagAvailble", "MyController", ErrorMessage = "Tag Already Exist.")]
public string Tag { get; set; }

第一个参数是Action名称,第二个参数是控制器名称,第三个参数是要显示给用户的错误文本。 现在在控制器中定义这个新动作,例如样本中的MyController。

public class MyController : Controller
{
    public ActionResult IsTagAvailble(string Tag)
    {
        using (DataBaseContext db = new DataBaseContext())
        {
            try
            {
                var tag = db.TABLE_NAME.Single(m => m.Tag == Tag);
                return Json(false, JsonRequestBehavior.AllowGet);
            }
            catch (Exception)
            {
                return Json(true, JsonRequestBehavior.AllowGet);
            }
        }
    }
}

这将远程验证标记字段的唯一性,并使用不显眼的javascript向用户显示错误。

最后你的观点应该是

@Html.TextBoxFor(m => m.Tag) @Html.ValidationMessageFor(m => m.Tag)