Używam System.ComponontModel.DataAnnotations do sprawdzania poprawności moich obiektów modelu. W jaki sposób mogę zastąpić standardowe atrybuty komunikatów (Wymagane i StringLength), nie dostarczając atrybutu ErrorMessage do każdego z nich ani nie je podklasy?Jak zastąpić standardowe komunikaty o błędach DataAnnotations
Odpowiedz
Pisanie nowego postu, ponieważ potrzebuję więcej formatowania niż podaje komentarz.
Spójrz na ValidationAttribute - podstawowa klasa atrybutów sprawdzania poprawności.
Jeśli błąd sprawdzania poprawności wystąpił, komunikat o błędzie zostanie utworzony metodą:
public virtual string FormatErrorMessage(string name)
{
return string.Format(CultureInfo.CurrentCulture, this.ErrorMessageString, new object[] { name });
}
Następny spojrzenia na ErrorMessageString właściwość:
protected string ErrorMessageString
{
get
{
if (this._resourceModeAccessorIncomplete)
{
throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, DataAnnotationsResources.ValidationAttribute_NeedBothResourceTypeAndResourceName, new object[0]));
}
return this.ResourceAccessor();
}
}
Property ResourceAccessor można setted od:
ValidationAttribute..ctor(Func<String>)
ValidationAttribute.set_ErrorMessage(String) : Void
ValidationAttribute.SetResourceAccessorByPropertyLookup() : Void
Pierwsza z nich jest dokładnie używana przez klasy pochodne do formatowania wiadomości, druga - gdy ustawiamy komunikat o błędzie za pomocą właściwości ErrorMessage, a trzecia - gdy używane są ciągi zasobów. W zależności od sytuacji możesz użyć ErrorMessageResourceName.
indziej przyjrzyjmy konstruktorów pochodnych, dla naszego przykładu, Rząd Atrybut:
private RangeAttribute()
: base((Func<string>) (() => DataAnnotationsResources.RangeAttribute_ValidationError))
{
}
Tutaj RangeAttribute_ValidationError jest ładowany z zasobu:
internal static string RangeAttribute_ValidationError
{
get
{
return ResourceManager.GetString("RangeAttribute_ValidationError", resourceCulture);
}
}
Więc można utworzyć plik zasobów dla różnych tan domyślna kultura i nadpisywanie wiadomości w następujący sposób:
http://www.codeproject.com/KB/aspnet/SatelliteAssemblies.aspx
http://msdn.microsoft.com/en-us/library/aa645513(VS.71).aspx
Można użyć ErrorMessage właściwość klasy bazowej ValidationAttribute dla wszystkich DataAnnotations weryfikatorów.
Na przykład:
[Range(0, 100, ErrorMessage = "Value for {0} must be between {1} and {2}")]
public int id;
Może to pomoże.
Prawda. Ale czy istnieje sposób na zastąpienie domyślnej wiadomości naraz? –
@FitzchakYitzchaki Czy kiedykolwiek to osiągnąłeś? –
- 1. komunikaty o błędach psycopg2
- 2. Komunikaty o błędach MessageBox C#
- 3. Komunikaty o błędach GNU C++
- 4. Jak włączyć komunikaty o błędach magento?
- 5. Jak usunąć komunikaty o błędach - IIS7
- 6. Jak blokować komunikaty o błędach Django
- 7. asp.net Web API - domyślne komunikaty o błędach
- 8. niestandardowe komunikaty o błędach z formularzem modelu
- 9. Django komunikaty o błędach domyślna forma przesłanianie
- 10. Komunikaty o błędach Dropwizard z Jersey
- 11. Komunikaty o błędach Firebase w różnych językach?
- 12. bardziej opisowy Komunikaty o błędach GHC
- 13. Komunikaty o błędach ActiveRecord: tłumaczenie dla pól
- 14. Ponów/ponów komunikaty o błędach w AKKA
- 15. Jak mogę wyłączyć komunikaty o błędach libavformat off
- 16. Jak wyświetlać komunikaty o błędach w polu Phoenix Framework
- 17. Jak mogę wstrzymać komunikaty o błędach vim przy uruchomieniu?
- 18. Jak wyświetlić komunikaty o błędach kontroli sprawdzania w polu Alert?
- 19. Sprawdzanie poprawności Knockout - jak wyświetlać komunikaty o błędach
- 20. Proste sprawdzanie poprawności do tworzenia! - jak wyświetlać komunikaty o błędach
- 21. Jak zmienić komunikaty o błędach podczas zmiany hasła
- 22. Jak uzyskać opisowe komunikaty o błędach z DB2?
- 23. Jak interpretować następujące komunikaty o błędach w C++
- 24. Jak tworzyć komunikaty o błędach naboju w edytorze kodów Ace
- 25. jak zrobić drukowanie GCC pomocne komunikaty o błędach RUNTIME?
- 26. Własne komunikaty o błędach w Serializatorze Django Rest Framework
- 27. Pokaż poprawne komunikaty o błędach z jQuery AJAX
- 28. Otrzymuj komunikaty o błędach sprawdzania poprawności bez zapisywania
- 29. PsExec zgłasza komunikaty o błędach, ale działa bez żadnych problemów.
- 30. Nie wyświetlają się komunikaty o błędach w formie Spring
Wielkie dzięki Veton. Ostatnia część, o której wspomniałeś, zupełnie mi umknęła. –
Nie mogę zrozumieć, jak powinny być nazwane pliki zasobów (i gdzie umieszczone), aby zastąpić ResourceManager z DataAnnotations.dll. – wRAR