Почему правило проверки требуемого свойства бриза не срабатывает при проверке нового объекта?

Я пытаюсь использовать функцию [Required] для проверки Breeze на стороне клиента. Я могу это сделать, но единственный успех, который у меня был до сих пор, - это строки. Я пытаюсь сделать то же самое с логическим значением, но Breeze не распознает проверку объекта.

Вот фрагмент кода моего домена:

     [Table("Uwrl")]
public partial class Uwrl
{
    public Uwrl()
    {
    }

    [Key]
    public int customerNumber { get; set; }

    [Required]
    [StringLength(40)]
    public string customerName { get; set; }

     [Required]
    [StringLength(50)]
    public string customerStatus {get;set;}


  public int? taxId {get;set;}

     [Required]
  public bool coAdministration{get;set;}

Вот фрагмент кода моего контроллера для проверки ошибок проверки:

            var testEntity = UWRLService.createEntity(entityName, uwrl.customerData);
          if (!testEntity.entityAspect.validateEntity()) { alert("Didn't VALIDATE!"); }

Вот мой взгляд на то, чтобы убедиться, что в моем конкретном свойстве есть z-validate:

                    <td style="text-align:right">
                    Co-Administration:<select ng-model="uwrl.coAdministration" data-z-required>
                        <option></option>
                        <option value="True">Yes</option>
                        <option value="False">No</option>
                    </select>
                </td>

И customerName, и customerStatus работают. CustomerStatus — это даже выбор (раскрывающийся список) — точно так же, как свойство coAdministration. Как проверить логические значения? У меня проверка строк работает отлично... какая разница?


person user1789573    schedule 03.12.2014    source источник
comment
Просто предположение, но свойство coAdministration не может быть обнулено, поэтому ветерок инициализирует его ложным правом? False не равно нулю, поэтому требуемая проверка не срабатывает. Проверьте это, добавив эту строку после вызова createEntity: console.log(testEntity.coAdministration)   -  person Jeremy Danyow    schedule 03.12.2014
comment
Итак, вы говорите, что мне нужно было изменить это: [Обязательно] public bool coAdministration{get;set;} на это: [Обязательно] public bool? совместное администрирование {получить; установить;}   -  person user1789573    schedule 03.12.2014
comment
да- это мое предположение- что console.log(testEntity.coAdministration) вернул?   -  person Jeremy Danyow    schedule 03.12.2014
comment
Он вернул ложь, лол. Как я могу предотвратить установку этого значения ветерком?   -  person user1789573    schedule 03.12.2014
comment
Опять-таки предположение, но я думаю, что вы могли бы либо присвоить значение null свойству coAdministration, либо сделать свойство обнуляемым, чтобы оно не инициализировалось значением false.   -  person Jeremy Danyow    schedule 03.12.2014
comment
Да, если я инициализирую свойство нулевым значением, оно работает!   -  person user1789573    schedule 03.12.2014
comment
Приятно! не забудьте принять мой ответ :)   -  person Jeremy Danyow    schedule 03.12.2014


Ответы (1)


Логическое свойство не может принимать значения NULL, что означает, что его начальное значение будет "false".

«false» не является нулевым или пустым, поэтому требуемое правило проверки не срабатывает.

person Jeremy Danyow    schedule 03.12.2014