可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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.
回答1:
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.
回答2:
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.
回答3:
I have also solved this problem using .ToString("d")
. I received output of "MM/DD/YYYY".
回答4:
This might be the wrong solution to the problem being asked, but I hope it helps someone. If you are trying to input only a date (without time) Model.IsValid will throw back a validation error saying the date input format is incorrect. To solve this problem, simply Add this to your model.
[Display(Name = "Date")]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
[DataType(DataType.Date)]
public DateTime Date { get; set; }
Using data attributes inside asp.net have the benefit of automatically being supported by jQuery client-side validation. (Generated by Asp.Net)
回答5:
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" })
回答6:
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.
回答7:
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}">