我正在开发一个ASP.Net web api项目,我想根据我从客户端获得的JSON请求来验证我的服务器数据模型。在我的服务器模型类中,我有一个双重值,并且我将客户端的值作为“12,14”发送。我写了一个由ValidationAttribute类.Net实现的自定义验证类,我使用IsValid(Object value)方法来验证此用户输入。如何使用自定义验证器验证.Net中的double值?
因此,当我将输入发送为“12,14”时,.Net会自动将此“12,14”转换为“1214”,认为“,”是组分隔符。但在这种情况下,“,”不是组织分隔符,因为这是Norwegiangian文化格式(“否”文化)的有效双数。
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)方法的输入参数时获取值。
在此先感谢。