Прямо сейчас, у меня есть форма с несколькими полями и на отправке, я хочу проверить, было ли имя пользователя взято или нет. Если сделано, ничего не делайте (покажите ошибку проверки), если не сделаете, успешно перейдите к следующей форме.Почему валидация не сбой на стороне клиента, но сбой на стороне сервера?
Вот что я сделал до сих пор:
Вид:
var RequestCreateAccount_Submit = function() {
var res = false;
ValidationAttribute.BlankValue(true);
var form = $('form#RequestCreateAccount');
$.validator.unobtrusive.parse(form);
var res = form.valid();
var data = form.serialize();
if (res) {
$.ajax({
url: Url.getFullUrl('Account/RequestCreateAccount_Submit'),
type: 'Post',
data: data,
cache:false,
success: function (data) {
//Next Dialog
},
error: AjaxLog.HandleAjaxCallFail
});
}
return res;
}
Контроллер:
[AllowAnonymous]
[HttpPost]
public ActionResult RequestCreateAccount_Submit(UserAccount userAccount)
{
//Check if username is unique
if (!WebSecurity.UserExists(userAccount.UserName))
{
UserSession.AddValue(StateName.CreateOrEditAccount, "CurrentUserAccount", userAccount);
JsonResult res = Json(new { Success = true, data = "", Message = "" });
return res;
}
JsonResult jres = Json(new { Success = false, data = "", Message = "Username is already registered"});
return jres;
}
Я тестировал его с известным именем и она попала в успех = ЛОЖЬ (вне строки if), и она не попала внутрь статута if. Поэтому я знаю, что проверка на стороне сервера работает.
Однако, мне интересно, почему на стороне клиента это все еще успех = истина, и появился следующий диалог. Это не подвело к проверке. Что я делаю неправильно на стороне клиента?
Каких проверок мы говорим? – haim770
Вы не показали нам, что в вашем клиентском коде предполагается, чтобы имя пользователя не было принято. Как выглядит этот код? – Becuzz
@Becuzz, у меня нет проверки на стороне клиента для имени пользователя. Я хочу сказать, что проверка проверки на стороне сервера работает, но в коде на стороне клиента следующий диалог все еще отображается. –