Логическое значение True для требуемого атрибута свойства MVC .net

Как мне получить значение True для свойства boolean в MVC 3 с .NET? Это где я, мне нужно, чтобы значение было True , иначе оно недействительно

 _
 _
Public Property AcceptAgreement As Boolean

Вот это исправление в случае, если ссылка когда-нибудь погаснет

Добавить этот класс

Public Class BooleanMustBeTrueAttribute Inherits ValidationAttribute

    Public Overrides Function IsValid(ByVal propertyValue As Object) As Boolean
        Return propertyValue IsNot Nothing AndAlso TypeOf propertyValue Is Boolean AndAlso CBool(propertyValue)
    End Function

End Class

Добавить атрибут

 _
 _
 _
Public Property AcceptAgreement As Boolean
4
Я знаю, что это старо, но если вы добавите свое решение в качестве ответа, я продолжу!
добавлено автор JMK, источник

1 ответы

Если кто-то заинтересован в добавлении проверки jQuery (чтобы флажок был проверен как в браузере, так и на сервере), вы должны изменить класс BooleanMustBeTrueAttribute следующим образом:

public class BooleanMustBeTrueAttribute : ValidationAttribute, IClientValidatable
{
    public override bool IsValid(object propertyValue)
    {
        return propertyValue != null
            && propertyValue is bool
            && (bool)propertyValue;
    }

    public IEnumerable GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        yield return new ModelClientValidationRule
        {
            ErrorMessage = this.ErrorMessage,
            ValidationType = "mustbetrue"
        };
    }
}

В принципе, класс теперь также реализует IClientValidatable и возвращает соответствующее сообщение об ошибке JS и атрибут проверки jquery, который будет добавлен в поле HTML («mustbetrue»).

Теперь, чтобы проверить правильность работы jquery, добавьте следующие JS на страницу:

jQuery.validator.addMethod('mustBeTrue', function (value) {
    return value;//We don't need to check anything else, as we want the value to be true.
}, '');

// and an unobtrusive adapter
jQuery.validator.unobtrusive.adapters.add('mustbetrue', {}, function (options) {
    options.rules['mustBeTrue'] = true;
    options.messages['mustBeTrue'] = options.message;
});

Note: I based the previous code on the one used in this answer -> Perform client side validation for custom attribute

И это в основном это :)

Помните, что для работы предыдущих JS вы должны были включить следующие js-файлы на страницу:

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

Постскриптум Когда у вас есть работа, я бы рекомендовал добавить код в js-файл в папку Scripts и создать пакет со всеми js-файлами.

4
добавлено
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)