Проверка на стороне клиента MVC 4 не работает
Может кто-нибудь сказать мне, почему проверка на стороне клиента не работает в моем приложении MVC 4.
_layout.schtml@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
В моем web.config у меня есть:
На моей странице login.cshtml у меня есть:
@using (Html.BeginForm())
{
@Html.LabelFor(x => x.AgreementNumber)
<br>
@Html.TextBoxFor(x => x.AgreementNumber, new { size = "30" })
<br>
@Html.ValidationMessageFor(m => m.AgreementNumber)
<br>
<br>
@Html.LabelFor(x => x.UserName)
<br>
@Html.TextBoxFor(x => x.UserName, new { size = "30" })
<br>
@Html.ValidationMessageFor(m => m.UserName)
<br>
<br>
@Html.LabelFor(x => x.Password)
<br>
@Html.PasswordFor(x => x.Password, new { size = "30" })
<br>
@Html.ValidationMessageFor(m => m.Password)
<br>
<br>
@Html.CheckBoxFor(m => m.RememberMe)
@Html.LabelFor(m => m.RememberMe, new { @class = "checkbox" })
<br>
<br>
Forgot login-info? clik <a class="link" href="@Url.Action(" index",="" "credentials")"="">here.</a>
}
В нижней части страницы входа в систему:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
JavaScript включен в моем браузере. В шаблонном проекте MVC 4 из Visual Studio валидация клиента работает отлично.
Запустив приложение, на странице входа в систему при просмотре исходного кода я вижу, что это отображается:
number
<br>
<br>
<span class="field-validation-valid" data-valmsg-for="AgreementNumber" data-valmsg-="" replace="true"></span>
и в этом внизу:
Свойства моей модели аннотированы:
public class LogonModel : ModelBase
{
[MyRequired("AgreementNumberRequiredProperty")]
[MyDisplay("AgreementNumberLabel")]
public string AgreementNumber { get; set; }
[MyRequired("UserNameRequiredProperty")]
[MyDisplay("UserNameLabel")]
public string UserName { get; set; }
[MyRequired("PasswordRequiredProperty")]
[DataType(DataType.Password)]
[MyDisplay("PasswordLabel")]
public string Password { get; set; }
[MyDisplay("RememberMeCheckBox")]
public bool RememberMe { get; set; }
}
MyRequired
это класс, производный от обычного RequiredAttribute. Причина в том, что мои сообщения об ошибках локализуются путем переопределенияFormatErrorMessage(string name)
методRequiredAttribute
учебный класс. И все работает нормально - мои ярлыки и сообщения об ошибках локализованы.
public class MyRequiredAttribute : RequiredAttribute
{
private readonly string _errorMessagekey;
public MyRequiredAttribute(string errorMessage)
{
_errorMessagekey = errorMessage;
}
public override string FormatErrorMessage(string name)
{
var translation = HttpContext.Current.Session["translation"] as LocalisationHelper;
return translation != null ? translation.Translate(_errorMessagekey) : ErrorMessage;
}
}
Я установил точку останова в версии POST моего метода действия входа в систему, и его ударили. Форма отправляется на сервер, где происходит проверка на стороне сервера. Проверка на стороне клиента не выполняетсяэто случилось.
Что мне не хватает?
Спасибо.