Описание Недавно я решил попробовать новую версию платформы ASP.NET MVC 4 и перенес проект с MVC 3 на MVC 4. И тут неожиданно, ни с того ни с сего, возникли проблемы (хотя кого я шучу, переход на бета-версию всегда означает некоторый риск) с проверкой на стороне клиента таких полей, как Datetime. Внезапно представление отказалось проверять такие поля, хотя раньше они это проходили, учитывая тот факт, что настройки сервера и культуры представления остались прежними.
Ищем проблему
Некоторое время спустя, после того как я от истерики вырвал все волосы на голове и замучил этой проблемой своих коллег по работе, я обнаружил, что MVC 3 и MVC 4 используют разные версии Razor View Engine, в которых выполнялся помощник EditorFor иначе.
Вот пример кода использования: @Html.EditorFor(model => model.Birthdate)
В результате для Razor второй версии из MVC 4 вход создавался с атрибутом data_val=true, а для MVC 3 такой атрибут просто отсутствовал, что означало отсутствие валидации на стороне клиента.
Решение
Думаю, проблему можно решить двумя способами:- Изменение jquery.validation.js, встроенного в проект по умолчанию, но это, мягко говоря, не очень хороший способ
- Создание собственного помощника, создающего входные данные без этого атрибута.
public static class DatetimeHelpers
{
public static IHtmlString Date(this HtmlHelper helper, string name, object value)
{
return Date(helper, name, value, null);
}
public static IHtmlString Date(this HtmlHelper helper, string name, object value, object htmlAttributes)
{
var tagBuilder = new TagBuilder("input");
tagBuilder.Attributes["name"] = name;
tagBuilder.Attributes["value"] = value.ToString();
tagBuilder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
return MvcHtmlString.Create(tagBuilder.ToString());
}
}
Вот пример использования:
@Html.Date("Birthdate", Model.Birthdate, new { id = "Birthdate" })
Возможно, у вас тоже была подобная проблема, и мне интересно узнать, как вы с ней справились.
Спасибо за внимание.
Теги: #asp.net mvc 4 #проверка #datetime #razor #разработка веб-сайтов #.
NET
Вместе с данным постом часто просматривают:
-
Мини-Беспроводная Клавиатура Rii
19 Oct, 24 -
Загрузка Видео С Youtube
19 Oct, 24 -
Сжигайте Калории, Не Отходя От Компьютера.
19 Oct, 24