Есть ли способ сделать локализованный атрибут сравнения в ASP.NET MVC?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли способ сделать локализованный атрибут сравнения в ASP.NET MVC?

Сообщение Anonymous »

Я пытаюсь создать локализованный веб -сайт от регистраного пользователя, но не знаю, как получить локализованный compatreattribute hakpe.
У меня есть 2 свойства:

Код: Выделить всё

[Required]
[LocalizedStringLength(100, "StringLengthErrorMessage", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }

[DataType(DataType.Password)]
[Display(Name = "ConfirmPassword")]
//[Compare("Password", ErrorMessage = "Passwords do not match.")]
[LocalizedCompare("Password", "ConfirmPasswordErrorMessage")] //Doesn't work
public string ConfirmPassword { get; set; }
и локализованная stringlengthattribute , что работает нормально:

Код: Выделить всё

public class LocalizedStringLengthAttribute : StringLengthAttribute
{
public string ErrorMessageKey { get; set; }

public LocalizedStringLengthAttribute(int maximumLength, string errorMessageKey)
: base(maximumLength)
{
ErrorMessageKey = errorMessageKey;
}

public override string FormatErrorMessage(string name)
{
var httpContextAccessor = new HttpContextAccessor();
var localizer = httpContextAccessor.HttpContext?.RequestServices.GetService();

var localizedMessage = localizer?[ErrorMessageKey] ?? ErrorMessageString;
return string.Format(localizedMessage, name, MaximumLength, MinimumLength);
}
}
Я создал LocalizedCompareatribute , но не смог найти, как заставить его работать - после добавления точки останова/попытки записаться в консоль, функция никогда не запускается. < Br />

Код: Выделить всё

public class LocalizedCompareAttribute : ValidationAttribute
{
private readonly string _otherProperty;
private readonly string _errorMessageKey;

public LocalizedCompareAttribute(string otherProperty, string errorMessageKey)
{
_otherProperty = otherProperty;
_errorMessageKey = errorMessageKey;
}

protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
// Get the other property value
var otherPropertyInfo = validationContext.ObjectType.GetProperty(_otherProperty);

if (otherPropertyInfo == null)
{
return new ValidationResult($"Unknown property: {_otherProperty}");
}

var otherValue = otherPropertyInfo.GetValue(validationContext.ObjectInstance);

// Compare values
if (!object.Equals(value, otherValue))
{
return new ValidationResult(httpContextAccessor.HttpContext?.RequestServices.GetService()?["_errorMessageKey"] ?? "Passwords do not match.");
}

return ValidationResult.Success;
}
}
Любая помощь ценится

Подробнее здесь: https://stackoverflow.com/questions/794 ... sp-net-mvc
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»