我正在开发一个 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) 方法的输入参数时获取值。
提前致谢。