我做了一个简单的Web应用程序,它在本地数据库上正常工作。发布后,有一个与DateTime的连接错误:ASP.NET MVC的日期时间解析
System.FormatException: String was not recognized as a valid DateTime.
在视图模型的代码如下所示:
[Required]
[ValidTime]
[Display(Name = "Game time")]
public string Time { get; set; }
[Required]
[FutureDate]
[Display(Name = "Game date")]
public string Date { get; set; }
public DateTime GetDateTime()
{
return DateTime.Parse(string.Format("{0} {1}", Date, Time));
}
控制器代码:
public ActionResult Create(GameFormViewModel viewModel)
{
if (!ModelState.IsValid)
return View("GameForm", viewModel);
var userId = User.Identity.GetUserId();
var game = new Game
{
TeamA = viewModel.TeamA,
TeamB = viewModel.TeamB,
DateTime = viewModel.GetDateTime(),
LeagueId = viewModel.Id,
AdminId = userId
};
_context.Games.Add(game);
_context.SaveChanges();
return RedirectToAction("MyLeagues", "Leagues");
}
为什么它在本地数据库工作,为什么发布后出现错误?
更新: 这就是我的FutureDate类
public class FutureDate : ValidationAttribute
{
public override bool IsValid(object value)
{
DateTime datetime;
var isvalid = DateTime.TryParseExact(Convert.ToString(value),
"dd-mm-yyyy",
CultureInfo.CurrentCulture,
DateTimeStyles.None,
out datetime);
return (isvalid && datetime >= DateTime.Now.AddDays(-1));
}
}
你可以在'DateTime = viewModel.GetDateTime(),'行中设置一个断点,并且还可以添加一个观察者到viewModel来检查这些值,更好的办法是发布截图... – Hackerman
@Jakubb,可能是问题是您的本地工作站和服务器上的不同语言环境。 –
也可以是通过输入的日期格式以及Parse方法预期的日期格式。你在UI中输入什么格式的日期和时间?你是以军事时间还是3:45 PM格式输入时间? –