ASP.Net Web API プロジェクトを開発しており、クライアント側から取得した JSON 要求に従ってサーバー データ モデルを検証したいと考えています。私のサーバー モデル クラスには double 値があり、クライアント側から "12,14" として値を送信しています。.Net の ValidationAttribute クラスによって実装されるカスタム検証クラスを作成しました。このユーザー入力を検証するために IsValid(Object value) メソッドを使用しています。
したがって、入力を "12,14" として送信すると、.Net は "," がグループ セパレータであると考えて、この "12,14" を "1214" に自動的に変換します。ただし、この場合、"," はグループ セパレータではありません。これは、ノルウェーのカルチャ形式 ("no" カルチャ) の有効な倍精度数値であるためです。
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(Object value) メソッドの入力パラメーターに取得することです。
前もって感謝します。