ZVenue
ZVenue

Reputation: 5027

Current date and time - Default in MVC razor

When the MVC view page with this textbox, loads , I would like to display current date and time by default. How can I do this? in razor.

  @Html.EditorFor(model => model.ReturnDate)

Upvotes: 18

Views: 143957

Answers (6)

Jimmy Oku
Jimmy Oku

Reputation: 21

If you want to only return the date without time. Use this.

<span>@DateTime.Today.ToString("d")<span>

Upvotes: 1

Adelin
Adelin

Reputation: 33

Date in a .razor file

<p>@DateTime.Today.toString()<p>

Upvotes: 1

Tink
Tink

Reputation: 231

If you want to display date time on view without model, just write this:

Date : @DateTime.Now

The output will be:

Date : 16-Aug-17 2:32:10 PM

Upvotes: 22

Jeremy Bell
Jeremy Bell

Reputation: 2174

Isn't this what default constructors are for?

class MyModel
{

    public MyModel()
    {
        this.ReturnDate = DateTime.Now;
    }

    public date ReturnDate {get; set;};

}

Upvotes: 8

Jamie Dixon
Jamie Dixon

Reputation: 54021

Before you return your model from the controller, set your ReturnDate property to DateTime.Now()

myModel.ReturnDate = DateTime.Now()

return View(myModel)

Your view is not the right place to set values on properties so the controller is the better place for this.

You could even have it so that the getter on ReturnDate returns the current date/time.

private DateTime _returnDate = DateTime.MinValue;
public DateTime ReturnDate{
   get{
     return (_returnDate == DateTime.MinValue)? DateTime.Now() : _returnDate;
   }
   set{_returnDate = value;}
}

Upvotes: 24

Lee DeLapp
Lee DeLapp

Reputation: 341

You could initialize ReturnDate on the model before sending it to the view.

In the controller:

[HttpGet]
public ActionResult SomeAction()
{
    var viewModel = new MyActionViewModel
    {
        ReturnDate = System.DateTime.Now
    };

    return View(viewModel);
}

Upvotes: 10

Related Questions