ASP.NET Core MVC中View中的格式化日期

时间:2017-05-03 06:40:07

标签: c# asp.net-core asp.net-core-mvc

关于使用模型将日期时间转换为日期,我遇到了问题。

类库中的模型

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

来自项目的模型

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

控制器中的代码

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

查看:

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

它显示如下:yyyy-MM-dd我想要实现的是我想将其更改为MM/dd/yyyy。我尝试使用.ToString("MM/dd/yyyy"),但它不起作用。

9 个答案:

答案 0 :(得分:7)

在您的模型中尝试使用它:

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

在您的控制器中将DateTime更改为日期:

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

希望这对你有所帮助。

答案 1 :(得分:3)

如果在模型中定义不起作用,则可以在视图文件中使用:

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

此ViewBag包含DateTime值。这个格式定义的时间消失了。没有必要在模型文件定义中通过日期更改日期时间

答案 2 :(得分:2)

我也使用#ID解决了这个问题。我收到了“MM / DD / YYYY”的输出。

答案 3 :(得分:1)

在模型中添加[DataType(DataType.Date)]

[Column(TypeName = "Date")]
[DisplayName("Date of birth")]
[DataType(DataType.Date)] 

答案 4 :(得分:0)

简单实用,请使用asp-format,例如:

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

或者:

@Html.TextBoxFor(model => model.MyDate, "{0:dd/MM/yyyy}", new { @class = "form-control" })

答案 5 :(得分:0)

这可能是所要解决问题的错误解决方案,但希望对您有所帮助。如果您尝试仅输入日期(无时间),则Model.IsValid将返回验证错误,提示日期输入格式不正确。要解决此问题,只需将其添加到模型中即可。

[Display(Name = "Date")]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
[DataType(DataType.Date)]
public DateTime Date { get; set; }

在asp.net中使用数据属性具有jQuery客户端验证自动支持的优点。 (由Asp.Net生成)

答案 6 :(得分:0)

对于那些想要改变视图中模型日期格式的人,无论Model类是什么(这是我期望的答案)。这在Razorpages和MVC中都适用。

只需将.ToString(“ dd / MM / YYYY”)添加到要显示的属性中即可。

例如

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

如果只想显示日期的一部分(例如月份和年份),而在其他地方则需要显示日期和时间,那么这很好。

答案 7 :(得分:0)

我认为这是dotnet核心上dateformat转义字符的错误。以上解决方案均不适合我。只有这种方法解决了我的问题。 why does DateTime.ToString("dd/MM/yyyy") give me dd-MM-yyyy?

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

<input asp-for="DateProperty" asp-format="{0:dd'/'MM'/'yyyy}">

答案 8 :(得分:0)

有时候这可能非常有用,

<input asp-for="DateProperty" asp-format="**@Model.DateProperty.ToString($"{0:dd/MM/yyyy}")**">