在我的Web API项目中,我有以下模型:
public class ModelClass
{
[Required(ErrorMessage = "Date Cannot Be Empty", AllowEmptyStrings = false)]
[DataType(DataType.Date, ErrorMessage="Date Not In Correct Date Format")]
public DateTime date { get; set; }
}
用于以下行动:
public HttpResponseMessage Submit([FromUri] ModelClass model)
{
//do sth
}
现在,如果我通过localhost:3647/api/Controller/Submit?date=31/12/2015
ModelState
验证DataType
验证失败,即使我将全球化更改为与dd/MM/yyyy
的日期格式匹配,如下所示:
<globalization culture="ms-MY" uiCulture="ms-MY" />
答案 0 :(得分:3)
在ASP.NET MVC中,因为我知道查询字符串总是使用InvariantCulture进行解析。 仅使用Thread Culture解析POST正文。我认为这是为了允许创建对所有用户都有效的网址。
再看看这个答案:https://stackoverflow.com/a/9977290/209727
或者此博文:http://weblogs.asp.net/melvynharbour/mvc-modelbinder-and-localization
如果你真的需要使用这种格式,你可以使用一个字符串并在你的控制器中解析它吗?