我做了一個簡單的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格式輸入時間? –