@ Html.TextBoxFor текстовое поле не выделено после неудачной проверки - PullRequest
7 голосов
/ 14 января 2012

Я использую MVC3 с Razor. Для ввода у меня есть два типа управления:

  1. @Html.TextBoxFor
  2. @Html.TextAreaFor

Оба имеют обязательную проверку поля. @Html.TextAreaFor выделите поле, если проверка не пройдена, а @Html.TextBoxFor - нет.

Вот мой код

HTML:

@Html.TextBoxFor(m => m.FirstName)

Модель:

[Required(ErrorMessage = "First Name is required")]
public string FirstName { get; set; }

Почему текстовое поле, созданное с использованием @Html.TextBoxFor, не выделяется при неудачной проверке?

Ответы [ 6 ]

10 голосов
/ 02 марта 2012

Убедитесь, что переменные, которые вы присваиваете этим полям ввода, [Обязательны] в вашем классе модели. Также вы удалили какие-либо css в процессе «очистки»?Попробуйте добавить это, если его там нет.

.field-validation-error
{
color: #ff0000;
}
.field-validation-valid
{
display: none;
}
.input-validation-error
{
border: 1px solid #ff0000;
background-color: #ffeeee;
}
.validation-summary-errors
{
font-weight: bold;
color: #ff0000;
}
.validation-summary-valid
{
display: none;
}
4 голосов
/ 23 января 2014

У меня была эта проблема сама.Я добавил новый класс CSS в файл Site.css (или любую другую таблицу стилей, которую вы предпочитаете).

textarea.input-validation-error {
border: 1px solid #e80c4d;
}
1 голос
/ 04 апреля 2013

Я столкнулся с той же проблемой сегодня:

Чтобы поднять проверку для текстового поля или любого другого поля, вам просто нужны эти две строки:

В контроллере: ModelState.AddModelError("ErrorEmail", "Error Message");

В представлении: @Html.ValidationMessage("ErrorEmail")

И в web.config

<appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

Он переписывал css проверки с моим собственным css-сайтом, поэтому он не показывал красную рамку вокруг текстового поля.

придание важности стилю ошибки проверки решило мою проблему:

input.input-validation-error {
    border: 1px solid #e80c4d !important;
}
0 голосов
/ 09 декабря 2015

Я знаю, что это старый, но если кто-то еще ищет это, убедитесь, что вы также используете

@Html.ValidationMessageFor(m => m.FirstName)

После вашего текстового поля

0 голосов
/ 17 октября 2013

Добавьте классы .input-validation-error и .input.input-validation-error.

0 голосов
/ 14 января 2012

Чтобы иметь возможность проверки на стороне клиента, вам необходимо убедиться, что у вас есть необходимые сценарии, включенные в ваше представление (будь то через представление _Layout.cshtml или ваше прямое представление).Поместите это в верхнюю часть вашего представления:

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

Убедитесь, что путь и имена сценариев верны.Это позволит вам использовать проверку на стороне клиента (т.е. выделение текстового поля).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...