none
Problema DateTime.ParseExact RRS feed

  • Pregunta

  • Hola a todos. Soy novato en esto de .NET. Estoy haciendo un formulario en MVC que lee los valores introducidos por el usuario y los introduce en una base de datos. Uno de los campos es una fecha, el cuál puede no ser rellenado por el usuario, pero no puede ser insertado en la base de datos como campo vacío. Es por ello que intentaba introducir una fecha por defecto para ese caso particular, todo ello desde la vista:

    <div class='leftColumn' style="width: 40%; clear: both; margin-top: 16px;">
       <%: Html.LabelFor(w => w.Baja)%>
       <%: Html.TextBoxFor(w => w.Baja, Model.Baja.HasValue ? Model.Baja.Value.ToShortDateString() : DateTime.ParseExact("00-00-0000", "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture), new { @class = "fechas", @tabindex = 1015, Style = "width: 125px;" })%>
    </div>

    El problema es que VisualStudio no me permite esta acción, me dice:

    No se puede determinar el tipo de la expresión condicional porque no hay una conversión explícita entre string y System.DataTime.

    He buscado información, pero no he conseguido encontrar nada que me ayude a solucionar el error. Alguna sugerencia?

    Muchísimas gracias de antemano.

    lunes, 3 de agosto de 2015 11:20

Respuestas

  • Hola, buenas.

    El problema lo tienes en la expresión condicional. Cuando usas el operador condicional, ambas expresiones de la condición deben devolver valores del mismo tipo.

    En tu caso Model.Baja.Value.ToShortDateString() devuelve como resultado una cadena y sin embargo DateTime.ParseExact("00-00-0000", "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture devuelve como resultado un objeto de tipo DateTime.

    Dado que vas a representar el valor en un TextBox, lo más simple sería convertir el resultante de la última expresión a string.

    Quedaría algo así:

    <div class='leftColumn' style="width: 40%; clear: both; margin-top: 16px;">
       <%: Html.LabelFor(w => w.Baja)%>
       <%: Html.TextBoxFor(w => w.Baja, Model.Baja.HasValue ? Model.Baja.Value.ToShortDateString() : DateTime.ParseExact("00-00-0000", "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture).ToShortDateString(), new { @class = "fechas", @tabindex = 1015, Style = "width: 125px;" })%>
    </div>

    Un saludo.


    When an answer is helpful, please vote as helpful, propose as answer and/or mark as answer

    • Marcado como respuesta Maco110 lunes, 3 de agosto de 2015 11:31
    lunes, 3 de agosto de 2015 11:27