[英]Format date within View in 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")
但它不起作用。
感谢@Enrico 的评论,我将其添加到答案中:
在你的模型中试试这个:
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
并在您的控制器中将 DateTime 更改为 Date :
myList.loanContract = new LoanContract { LoanDateStart = Date.Today };
希望这对您有所帮助。
简单实用,使用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" })
如果在模型中定义不起作用,您可以在视图文件中使用:
@String.Format("{0:dd/MM/yyyy}",ViewBag.TerminoDaAvaliacao)
此 ViewBag 包含一个 DateTime 值。 这种格式定义的时间消失了。 不必在模型文件定义中按日期更改DateTime 。
我还使用.ToString("d")
解决了这个问题。 我收到了“MM/DD/YYYY”的输出。
这可能是对所问问题的错误解决方案,但我希望它对某人有所帮助。 如果您尝试仅输入日期(没有时间),Model.IsValid 将返回验证错误,说明日期输入格式不正确。 要解决此问题,只需将其添加到您的模型中。
[Display(Name = "Date")]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
[DataType(DataType.Date)]
public DateTime Date { get; set; }
在 asp.net 中使用数据属性的好处是 jQuery 客户端验证自动支持。 (由 Asp.Net 生成)
我认为这是 dotnet 核心上 dateformat 转义字符的错误。 以上解决方案都不适合我。 只有这种方法解决了我的问题。 为什么 DateTime.ToString("dd/MM/yyyy") 给我 dd-MM-yyyy?
[DisplayFormat(DataFormatString = "{0:dd'/'MM'/'yyyy}", ApplyFormatInEditMode = true)]
或者
<input asp-for="DateProperty" asp-format="{0:dd'/'MM'/'yyyy}">
在模型中添加 [DataType(DataType.Date)]
[Column(TypeName = "Date")]
[DisplayName("Date of birth")]
[DataType(DataType.Date)]
(当前为 ASP.NET 6)
几乎所有这些答案(来自@Alex_Jung_89 的答案除外)的问题是他们不尊重线程的当前文化。 如果您在不同的语言环境中操作,那么您使用的自定义字符串将不正确,例如,如果您的用户从fr-FR
浏览器点击您,因为他们将月份和日期与美国标准相反。
标签助手在这里工作得最好,没有所有的注释东西会破坏你的模型,并且回到管道中,模型绑定器将在当前的线程文化上工作。
<input type="text" asp-for="Dob" asp-format="{0:d}" />
最好将格式化推迟到视图以保持关注点的清晰分离。
标准格式字符串: https ://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings
对于那些想要在视图中更改模型的日期格式的人,无论模型类如何(这是我期望回答的)。 这适用于 Razorpages 和 MVC。
只需将 .ToString("dd/MM/YYYY") 添加到您正在显示的属性中。
例如
@Model.DateOfBirth.ToString("<Use formatting here>")
如果您只想显示日期的一部分,比如月份和年份,这很好,但在其他地方您需要显示日期和时间。
这有时可能非常有用,
<input asp-for="DateProperty" asp-format="**@Model.DateProperty.ToString($"{0:dd/MM/yyyy}")**">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.