Это не ненавязчивая проверка, это очень навязчивая проверка.
Чтобы использовать ненавязчивую проверку, украсьте вашу модель атрибутами, например:
public class ValidationModel {
[Required]
public string FirstName { get; set; }
[Required, StringLength(60)]
public string LastName { get; set; }
[Range(1, 130)]
public int Age { get; set; }
}
Используйте помощники MVC для ввода HTML и сообщений проверки:
@Html.TextBoxFor(x => x.FirstName)
@Html.ValidationMessageFor(x => x.UserName)
@Html.TextBoxFor(x => x.LastName)
@Html.ValidationMessageFor(x => x.LastName)
@Html.TextBoxFor(x => x.Age)
@Html.ValidationMessageFor(x => x.Age)
Включите библиотеку JQuery Validate и библиотеку ненавязчивой проверки:
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript">
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript">
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript">
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript">
Включить ненавязчивую проверку в web.config:
<appSettings>
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
Проверьте элементы в firebug, чтобы убедиться, что к ним добавлены ненавязчивые атрибуты «data-val», например ::
<input data-val="true" data-val-length="The field Name must be a string with a maximum length of 5." data-val-length-max="5" data-val-required="The Name field is required." id="Name" name="Name" type="text" value="" />
И проверка будет работать, JavaScript не требуется, совершенно незаметно.
Дополнительная информация:
http://weblogs.asp.net/mikaelsoderstrom/archive/2010/10/06/unobtrusive-validation-in-asp-net-mvc-3.aspx
http://thepursuitofalife.com/asp-net-mvc-3-unobtrusive-javascript-validation-with-custom-validators/