Я использую Систему. ComponontModel. DataAnnotations для проверки моих объектов модели. Как я мог заменить атрибуты стандарта сообщений (Требуемый, и StringLength) производят, не предоставляя атрибут ErrorMessage каждому из них или sub классификация их?
Написание нового сообщения, потому что мне нужно больше форматирования, чем предоставляют комментарии.
Посмотрите ValidationAttribute - базовый класс атрибутов проверки.
Если произошла ошибка проверки, сообщение об ошибке будет создано методом:
public virtual string FormatErrorMessage(string name)
{
return string.Format(CultureInfo.CurrentCulture, this.ErrorMessageString, new object[] { name });
}
Затем посмотрите на свойство ErrorMessageString :
protected string ErrorMessageString
{
get
{
if (this._resourceModeAccessorIncomplete)
{
throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, DataAnnotationsResources.ValidationAttribute_NeedBothResourceTypeAndResourceName, new object[0]));
}
return this.ResourceAccessor();
}
}
Свойство ResourceAccessor можно установить из:
ValidationAttribute..ctor(Func<String>)
ValidationAttribute.set_ErrorMessage(String) : Void
ValidationAttribute.SetResourceAccessorByPropertyLookup() : Void
Первый из них точно используется классами dervided для форматирования сообщений, второй - случай, когда мы устанавливаем сообщение об ошибке через свойство ErrorMessage , а третий - когда используются строки ресурсов. В зависимости от вашей ситуации, вы можете использовать ErrorMessageResourceName .
В другом месте давайте посмотрим на производные конструкторы, например на атрибут Range:
private RangeAttribute()
: base((Func<string>) (() => DataAnnotationsResources.RangeAttribute_ValidationError))
{
}
Здесь RangeAttribute_ValidationError загружается из ресурса:
internal static string RangeAttribute_ValidationError
{
get
{
return ResourceManager.GetString("RangeAttribute_ValidationError", resourceCulture);
}
}
Таким образом, вы можете создать файл ресурсов для различных языков по умолчанию и перезаписать сообщения вот так:
http://www.codeproject.com/KB/aspnet/SatellAssemblies.aspx
http://msdn.microsoft.com/en-us/library/aa645513 (VS.71) .aspx
Я считаю, что счетчик _Total является просто агрегатом для ситуаций, когда существует несколько экземпляров одного счетчика. В некоторых случаях, например Processor -% Process Time, оно обеспечивает среднее значение по всем экземплярам.
Выбор опции «Все экземпляры» - это просто способ быстрого включения всех счетчиков экземпляров (сохранение проблем выбора каждого из них по отдельности).
-121--4013089-Конечно! Нужно просто сбросить метки галочек.
EDIT с ответом и картиной (можно выполнить аналогично hist
):
x = scipy.arange(4)
y = scipy.array([4,7,6,5])
f = pylab.figure()
ax = f.add_axes([0.1, 0.1, 0.8, 0.8])
ax.bar(x, y, align='center')
ax.set_xticks(x)
ax.set_xticklabels(['Aye', 'Bee', 'Cee', 'Dee'])
f.show()
(источник: stevetjoa.com )
Свойство ErrorMessage базового класса ValidationAttribute можно использовать для всех средств проверки DataAnnotations.
Например:
[Range(0, 100, ErrorMessage = "Value for {0} must be between {1} and {2}")]
public int id;
Может быть, это поможет.