Format date within View in ASP.NET Core MVC

2020-02-28 07:28发布

I have problem in regarding with converting the datetime to date using a model.

Model from Class Library

public partial class LoanContract
{
    [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
    public DateTime LoanDateStart { get; set; }
}

Model from Project

public class ModelLoan
{
    public LoanContract loanContract { get; set; }
}

Code in controller

 myList.loanContract = new LoanContract { LoanDateStart = DateTime.Today };

View:

<input disabled type="date" asp-for="loanContract.LoanDateStart" id="dpDateNow" class="form-control" />

It show like this: yyyy-MM-dd what I want to achieve is that I want to change it to MM/dd/yyyy. I tried using .ToString("MM/dd/yyyy") but it doesn't work.

7条回答
The star\"
2楼-- · 2020-02-28 08:05

Simple and practical, use asp-format, example:

<input asp-for="MyDate" asp-format="{0:dd/MM/yyyy}" class="form-control" />

Or:

@Html.TextBoxFor(model => model.MyDate, "{0:dd/MM/yyyy}", new { @class = "form-control" })
查看更多
我欲成王,谁敢阻挡
3楼-- · 2020-02-28 08:08

If when defining in model does not work, you can use inside your view file:

@String.Format("{0:dd/MM/yyyy}",ViewBag.TerminoDaAvaliacao)

This ViewBag contains a DateTime value. The time disapears with this format definition. It is not necessary to change DateTime by Date inside the Model file definition.

查看更多
Anthone
4楼-- · 2020-02-28 08:09

For those who get here wanting to change date format of a model in the view regardless of Model class (Its what I expected to be answering). This works in both Razorpages and MVC.

Just add .ToString("dd/MM/YYYY") to the property you're displaying.

e.g.

@Model.DateOfBirth.ToString("<Use formatting here>")

This is great if you only want to show part of a date say month and year, but elsewhere you need to show the day and the time.

查看更多
不美不萌又怎样
5楼-- · 2020-02-28 08:19

I think it is a bug for dateformat escape chars on dotnet core. None of above solutions worked for me. Only this method solved my problem. why does DateTime.ToString("dd/MM/yyyy") give me dd-MM-yyyy?

[DisplayFormat(DataFormatString = "{0:dd'/'MM'/'yyyy}", ApplyFormatInEditMode = true)]

or

<input asp-for="DateProperty" asp-format="{0:dd'/'MM'/'yyyy}">
查看更多
倾城 Initia
6楼-- · 2020-02-28 08:23

I have also solved this problem using .ToString("d"). I received output of "MM/DD/YYYY".

查看更多
冷血范
7楼-- · 2020-02-28 08:27

Try it with this in your model:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]

And In your controller change DateTime to Date :

myList.loanContract = new LoanContract { LoanDateStart = Date.Today };

Hope this help you.

查看更多
登录 后发表回答