保存DateTime值在生产MVC3服务器中不起作用

时间:2011-09-13 21:39:18

标签: c# asp.net-mvc-3 datetime

这适用于我的开发机器,但不适用于我的实际生产服务器。

我只是想注册一个用户,但出生日期必须格式为dd/mm/yyyy。例如:28/09/1980

这在我的开发机器上非常有效,我可以注册并正确保存出生日期。

但是当在产品服务器上运行完全相同的代码时,我收到错误:

The value '29/08/1980' is not valid for Fecha de Nacimiento (dd-mm-aaaa):.

我应该寻找什么以及可能导致日期在我的开发机器上正确保存的原因,但拒绝在生产中正常工作?

如果我将值切换为09/28/1989它可以正常工作,但由于日期在玻利维亚格式化,我需要使用Day然后是Month,然后是Year。

以下是用户点击提交按钮时运行的[HttpPost] Action方法:

[HttpPost]
public ActionResult Register(UserModel model)
{
    EFCityRepository cityRepo = new EFCityRepository();
    model.Cities = new List<SelectListItem>();
    foreach (var city in cityRepo.FindAllCities())
    {
        model.Cities.Add(new SelectListItem { Text = city.Name, Value = city.CityId.ToString(), Selected = true });
    }

    EFGenderRepository genderRepo = new EFGenderRepository();
    model.Genders = new List<SelectListItem>();
    foreach (var gender in genderRepo.FindAllGenders())
    {
        model.Genders.Add(new SelectListItem { Text = gender.Name, Value = gender.GenderId.ToString(), Selected = true });
    }

    if (ModelState.IsValid)
    {
        Domain.User user = Mapper.Map<UserModel, Site.Domain.User>(model);
        user.UserRoleId = 1;
        user.EmailVerificationCode = SecurityHelpers.GenerateRandomToken();
        user.IsActive = true;
        user.LancesSpent = 0;
        user.GoldShopPointsSpent = 0;
        user.LanceCreditBalance = 25;
        user.GoldShopCreditBalance = 0;
        user.DateOfRegistry = DateTime.Now;
        user.LastDateLogin = DateTime.Now;

        var result = userRepo.CreateUser(user);

        if (result == UserCreationResults.Ok)
        {
            SecurityHelpers.SendVerificationEmail(user.Email, user.UserId, user.EmailVerificationCode);
            FormsAuthentication.SetAuthCookie(model.Login, false /* createPersistentCookie */);
            return RedirectToAction("Index", "Home");
        }
        else
        {
            switch (result)
            {
                case UserCreationResults.UsernameExists:
                    ModelState.AddModelError("", "El nombre de usuario ya esta siendo utilizado.");
                    break;
                case UserCreationResults.EmailAlreadyExists:
                    ModelState.AddModelError("", "Ese correo ya esta en uso.");
                    break;
                case UserCreationResults.NicknameAlreadyExists:
                    ModelState.AddModelError("", "El nickname ya esta siendo utilizado.");
                    break;
                case UserCreationResults.UnknownError:
                    ModelState.AddModelError("", "Algo durante el registro. Por favor intente de nuevo.");
                    break;
                default:
                    break;
            }
        }
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}

}

1 个答案:

答案 0 :(得分:4)

在web.config中设置文化:

<globalization culture="es-BO" uiCulture="es-BO" />