Я реализовал удаленную проверку с использованием ненавязчивой проверки MVC 3 следующим образом
Модель
public class MyViewModel {
[Remote("ValidateAction", "Validation")]
public string Text { get; set; }
}
Контроллер
public partial class ValidationController : Controller
{
public virtual JsonResult ValidationAction(string aTextToValidate)
{
if(aTextToValidate == /* some condition */)
return Json(true, JsonRequestBehavior.AllowGet);
return Json("This is not valid, Try Again !", JsonRequestBehavior.AllowGet);
}
}
Вид
@using (Html.BeginForm() {
@Html.TextBoxFor(m => m.Text)
@Html.ValidationMessageFor(m => m.Text)
}
И все, все работает, но ValidationAction запускается при каждом нажатии клавиши, что не идеально, я хотел бы просто срабатывать, когда элемент теряет фокус, но не могу понять, как это сделать
На самом деле я заметил, что по умолчанию проверка действительно запускается onBlur один раз. в первый раз, когда элемент теряет фокус, однако при попытке исправить это выполняется проверка onKeyUp. Я думаю, что это предназначенная функциональность, и подумать об этом, вероятно, будет весьма полезно. Однако было бы полезно узнать, можно ли изменить это поведение