2009-11-30 1 views
0

Я создал пользовательское правило, добавивКак уловить BrokenRuleException в PLINQO?

static partial void AddSharedRules() 
{ 
      RuleManager.AddShared<Tag>(
       new CustomRule<String>(
        "TagName", 
        "Invalid Tag Name, must be between 1 and 50 characters", 
        IsNullEmptyOrLarge)); 
} 

мой класс сущностей.

Затем я добавил правило (как видно на видео, хотя видео датирована и имеет неправильную информацию):

public static bool IsNullEmptyOrLarge(string value) 
    { 
     return (value == null 
      || String.IsNullOrEmpty(value) 
      || value.Length > 50); 
    } 

Но теперь у меня есть код, вызывающий ...

try  
{  
    // some code 
} 
catch (CodeSmith.Data.Rules… ???) 
{ 

// I can’t add the BrokenRuleException object. It’s not on the list. 
} 

I имеют: назначение, безопасность и валидацию.

Каков правильный способ перехватить исключение из правил в PLINQO?

+0

Отлично, теперь у меня есть цена подходящая песня застряла в моей голове. –

ответ

4

Вот что вам нужно сделать, сначала добавьте ссылку в свой проект, чтобы

System.ComponentModel.DataAnnotations 

using CodeSmith.Data.Rules; 

Тогда

try 
{ 
    context.SubmitChanges(); 
} 
catch (BrokenRuleException ex) 
{ 
    foreach (BrokenRule rule in ex.BrokenRules) 
    { 
     Response.Write("<br/>" + rule.Message); 
    } 
} 

Если вы хотите изменить сообщение по умолчанию, то вы можете перейти к вашей организации и изменить атрибут из

[Required] 

в

[CodeSmith.Data.Audit.Audit] 
private class Metadata 
{ 
    // Only Attributes in the class will be preserved. 

    public int NameId { get; set; } 

    [Required(ErrorMessage="please please please add a firstname!")] 
    public string FirstName { get; set; } 

Вы также можете использовать эти типы аннотаций данных атрибутов

[StringLength(10, ErrorMessage= "The name cannot exceed 10 characters long")] 
    [Range(10, 1000, ErrorMessage = "Value for {0} must be between {1} and {2}.")] 
    [RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$", ErrorMessage = "Characters are not allowed.")] 
    public string FirstName { get; set; } 

HTH

+0

Спасибо Rippo, как обычно, вы были очень полезны, как здесь, так и @ на форумах PLINQO. –

 Смежные вопросы

  • Нет связанных вопросов^_^