Как реализовать пользовательские стили проверки для всей модели (ASP.NET MVC) - PullRequest
1 голос
/ 13 марта 2012

В настоящее время я разрабатываю пользовательские коды проверки в MVC3. У меня есть ряд правил для каждого свойства, а также правила для всей модели, как показано ниже:

Код проверки:

[AttributeUsage(AttributeTargets.All)]
public sealed class VerifyRoleIntegrityAttribute : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        RoleItem item = (RoleItem)value;
        if (item.Name == null && item.UserId != 0)
            return new ValidationResult("Error: Name is missing");

        return ValidationResult.Success;
    }
}

Модель:

[VerifyRoleIntegrity]
public class RoleItem //imagine this as a single row of div, there's a list of them
{
    [ValidUser]
    public string Name { get; set; } //bound to a textbox using Html.TextBoxFor
    public int UserId { get; set; }
    public bool IsAdmin { get; set; }
    public bool IsUserType1 { get; set; }
    public bool IsUserType2 { get; set; }
}

Вид:

<div class="ad-row">
    @Html.ValidationMessageFor(model => model)
    <div class="ad-cell">
        @Html.TextBoxFor(model => model.Name)
        @Html.HiddenFor(model => model.UserId)
    </div>
    <div class="ad-cell">
        @Html.CheckBoxFor(model => model.IsAdmin)
    </div>
    <div class="ad-cell">
        @Html.CheckBoxFor(model => model.IsUserType1)
    </div>
    <div class="ad-cell">
        @Html.CheckBoxFor(model => model.IsUserType2)
    </div>
</div>

Для ValidUser, всякий раз, когда я сталкиваюсь с ошибкой проверки после публикации, MVC удобно выделяет текстовое поле чистым красным выделением, а я ничего не стилизую. Это мое предполагаемое поведение.

Для VerifyRoleIntegrity я хочу, чтобы вся строка ошибки была как-то выделена, возможно, измените цвет фона включающего его div. В настоящее время все, что я могу реализовать, это Html.ValidationMessageFor (model => model), где я могу вывести сообщение об ошибке моего пользовательского класса проверки. Скорее, это просто сообщение, я хочу стиль проверки.

Я подумал, что мне нужно где-то вникнуть во встроенные файлы jquery и css, предоставленные мне MVC, но у меня недостаточно знаний javascript / css, чтобы сделать это правильно, поэтому я хочу обратиться за помощью, чтобы завершить круг , Большая часть того, что я нашел в Интернете, останавливается на том, как реализовать ValidationAttribute, но кроме этого я не нашел много. Кроме того, я понимаю, что мог бы взломать обнаружение добавленного сообщения проверки через javascript, чтобы что-то сделать с этой строкой div, но это взлом, а не правильная реализация.

Спасибо.

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