加工
该RemoteAttribute作品通过使从客户端AJAX调用与字段的值的控制动作被验证。然后,控制器操作将返回一个JsonResult指示验证成功或失败的响应。true从您的操作返回表示已通过验证。任何其他值表示失败。如果返回false,则使用在属性中指定的错误消息。如果返回任何其他内容,例如字符串或什至整数,它将显示为错误消息。除非您希望错误消息是动态的,否则返回true或false并让验证程序使用在属性上指定的错误消息是有意义的。
视图模型
public class ViewModel
{
[Remote("IsEmailAvailable", "Group", HttpMethod = "POST", ErrorMessage = "Email already exists. Please enter a different email address.")]
public string Email{ get; set; }
}控制者
[HttpPost]
public JsonResult IsEmailAvailable(string Email)
{
// 检查电子邮件是否已注册的逻辑。
var emailExists = IsEmailRegistered();
return Json(!emailExists);
}现场演示小提琴
您可以使用的AdditionalFields属性将模型的其他属性传递给控制器方法RemoteAttribute。典型的场景是以“编辑”形式传递模型的ID属性,以便控制器逻辑可以忽略现有记录的值。
模型
public int? ID { get; set; }
[Display(Name = "Email address")]
[DataType(DataType.EmailAddress)]
[Required(ErrorMessage = "Please enter you email address")]
[Remote("IsEmailAvailable", HttpMethod="Post", AdditionalFields="ID", ErrorMessage = "Email already exists. Please enter a different email address.")]
public string Email { get; set; }控制者
[HttpPost]
public ActionResult Validate(string email, int? id)
{
if (id.HasValue)
{
return Json(!db.Users.Any(x =>x.Email== email &&x.ID!= id);
}
else
{
return Json(!db.Users.Any(x =>x.Email== email);
}
}工作演示-其他字段
附加说明
可以理解,默认错误消息含糊不清,因此在使用时,请务必记住要覆盖默认错误消息RemoteAttribute。