Encontré muchas preguntas simulair pero no una buena solución limpia que funciona. Veo un montón de código personalizado para hacer que esto funcione, pero ¿por qué? ¿No debería funcionar esto desde el principio?Validación MVC DateTime que falla
Lo que creo que es extraño, es que en IE9 funciona, pero en Firefox y Chrome está fallando. Cada vez que intento en Firefox o Chrome, aparece el mensaje "El campo Cumpleaños debe ser una fecha".
Cuando intento el siguiente código en un nuevo proyecto MVC 4 RTM, no consigo que funcione. Veo el DateTime.Now predeterminado como dd-MM-aaaa (Holanda) en todos los navegadores pero no puedo enviarlo en Firefox y Chrome.
La etiqueta de globalización no está configurada en web.config, por lo que debe estar utilizando la predeterminada. Soy de Holanda, así que creo que debería atraer la cultura del cliente.
public class RegisterModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
//[DataType(DataType.Date)]
public DateTime Birthday { get; set; }
}
[AllowAnonymous]
public ActionResult Register()
{
RegisterModel vm = new RegisterModel()
{
Birthday = DateTime.Now
};
return View(vm);
}
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
try
{
//WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
//WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
marcado
<!-- language: lang-none -->
@model DateTimeWithDatePicker.Models.RegisterModel
@{
ViewBag.Title = "Register";
}
<hgroup class="title">
<h1>@ViewBag.Title.</h1>
<h2>Create a new account.</h2>
</hgroup>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary()
<fieldset>
<legend>Registration Form</legend>
<ol>
<li>
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName)
</li>
<li>
@Html.LabelFor(m => m.Birthday)
@Html.EditorFor(m => m.Birthday)
</li>
</ol>
<input type="submit" value="Register" />
</fieldset>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Lo siento, pero no saben cómo dar formato a la MVC Ver arriba. –