He decidido comenzar con MVC 3 y me encontré con este problema al intentar rehacer una de mis aplicaciones web a MVC3.Textboxfor mvc3 formato de fecha y validación de fecha
Tengo proyectos de instalación de esta manera:
public class Project
{
public int ProjectID { get; set; }
[Required(ErrorMessage="A name is required")]
public string Name { get; set; }
[DisplayName("Team")]
[Required(ErrorMessage="A team is required")]
public int TeamId { get; set; }
[DisplayName("Start Date")]
[Required(ErrorMessage="A Start Date is required")]
[DisplayFormat(ApplyFormatInEditMode=true, DataFormatString="{0:d}")]
public DateTime StartDate { get; set; }
[DisplayName("End Date")]
[Required(ErrorMessage="An End Date is required")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime EndDate { get; set; }
}
Y mi forma de entrada se escribe de esta manera durante las fechas:
<table>
<tr>
<td>
<div class="editor-label">
@Html.LabelFor(model => model.StartDate)
</div>
</td>
<td>
<div class="editor-label">
@Html.LabelFor(model => model.EndDate)
</div>
</td>
</tr>
<tr>
<td>
<div class="editor-field">
@Html.TextBoxFor(model => model.StartDate, new { @class = "datepicker", id="txtStartDate" })
@Html.ValidationMessageFor(model => model.StartDate)
</div>
</td>
<td>
<div class="editor-field">
@Html.TextBoxFor(model => model.EndDate, new { @class = "datepicker", id = "txtEndDate" })
@Html.ValidationMessageFor(model => model.EndDate)
</div>
</td>
</tr>
</table>
Mi problema es que el cuadro de texto se muestra ahora 01/Ene/0001 00:00:00. Primero: ¿cómo puedo obtener la fecha para formatear a shortdatestring? He encontrado un MVC2 solution que aconseja crear una carpeta EditorTemplates en SharedFolder y usar EditorFor en su lugar, pero eso no parece funcionar con MVC3. También parecía evitar agregar clases fácilmente como con TextBoxFor
Y en segundo lugar, una vez que se soluciona, tengo un sistema de validación especial que debo implementar. Necesito que la fecha de finalización sea DESPUÉS de la fecha de inicio. Estoy pensando en hacer el chequeo con un javascript, encontré http://www.datejs.com pero ¿hay alguna manera de hacer la validación directamente en mi clase?
Gracias por los enlaces! Mis fechas todavía muestran 01/01/001 sin embargo. Pero creo que puedo volver a escribir eso en jquery. – LanFeusT
Puede ser una pregunta estúpida, pero, ¿las fechas se rellenaron antes de enviarse a la vista? – DarkStar33
No veo cómo podrían ser. Mi HomeController es bastante sencillo: 'public PartialViewResult EntryForm() { ViewBag.Teams = projectDB.Teams.OrderBy (p => p.Name) .ToList(); var project = new Project(); return PartialView (proyecto); } ' – LanFeusT