jgauffin
jgauffin

Reputation: 101192

Html.EditorFor and custom format

I got a property in my model which is a DateTime . I would like to get an empty <input /> (instead of one containing '0001-01-01 00:00:00') if the property contains DateTime.MinValue.

Is that possible?

Upvotes: 6

Views: 4743

Answers (2)

k.m
k.m

Reputation: 31484

One solution I've found working for me was to add strongly typed partial view (for System.DateTime) and put it in Views/Shared/EditorTemplates directory. File DateTime.cshtml looks pretty much like this:

@model System.DateTime
@Html.TextBox("", Model == DateTime.MinValue ? "" : Model.ToShortDateString())

This will however format all your DateTime fields.

More information can be found in this article.

Upvotes: 7

Daniel Pe&#241;alba
Daniel Pe&#241;alba

Reputation: 31907

Write an extension helper method:

public static class DateTimeHelper
{
    public static string MyEditor(this HtmlHelper helper, DateTime date)
    {
        if (date.Equals(DateTime.MinValue))
        {
            // return your an empty input: helper.TextBox ...
        }
        // return helper.EditorFor your datetime
    }
}

Then, from you view:

<%= Html.MyEditor(Model.YourDateTimeField) %>

Upvotes: 2

Related Questions