Я разрабатываю проект веб-API ASP.Net и хочу проверить свою модель данных сервера в соответствии с запросом JSON, который я получаю со стороны клиента. В моем классе модели сервера у меня есть двойное значение, и я отправляю значение со стороны клиента как «12,14». Я написал собственный класс проверки, который реализуется классом ValidationAttribute для .Net, и я использую метод IsValid (значение объекта) для проверки этого пользовательского ввода.
Поэтому, когда я отправляю свой ввод как «12,14», .Net автоматически преобразует это «12,14» в «1214», думая, что «,» является разделителем групп. Но в этом случае «,» не является разделителем групп, так как это допустимое число Double для норвежского культурного формата (культура «нет»).
public class Client : IClient
{
public string ClientId { get; set; }
public int EngagementId { get; set; }
[MyCustomDoubleType]
public double MyValue{ get; set; } //Notice that this is my double value to be validated.
}
Это специальный валидатор, который я написал для проверки "MyValue".
public class MyCustomDoubleTypeAttribute : ValidationAttribute
{
public override bool IsValid(object value) //When I send "12,14" from client, the value gets assigned to this value is "1214". .Net thinks "," is a group separator and removes it.
{
string doubleValue = value.ToString();
try
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("no");
double convertedDouble = double.Parse(doubleValue);
string convertedString = convertedDouble.ToString(Thread.CurrentThread.CurrentCulture);
if (convertedString.Equals(doubleValue))
{
return true;
}
return false;
}
catch (FormatException formatException)
{
return false;
}
}
public override string FormatErrorMessage(string name)
{
return string.Format(CultureInfo.CurrentCulture,
ErrorMessageString,
name);
}
}
Так что это моя проблема. Я хочу получить значение при вводе на стороне клиента во входной параметр метода IsValid (значение объекта).
Заранее спасибо.