【问题标题】:Format date within View in ASP.NET Core MVC在 ASP.NET Core MVC 中的视图中格式化日期
【发布时间】:2021-01-06 18:58:53
【问题描述】:

我在使用模型将日期时间转换为日期时遇到问题。

类库中的模型

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"),但它不起作用。

【问题讨论】:

  • 请不要强制标签进入标题。阅读how to use tags 以了解未来的问题。另外,请确保将来使用正确的标签。 asp.netasp.net-mvc 是 ASP.NET Core 相关主题的不正确标签。以后请使用asp.net-coreasp.net-core-mvc,否则您可能会收到与旧的 ASP.NET 而不是 ASP.NET Core 无关的答案
  • 我会注意的。
  • 下面提到的答案和 cmets 在 asp.net core 5 中都没有为我工作

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


【解决方案1】:

感谢@Enrico 的评论,我将其添加到答案中:

在你的模型中试试这个:

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

并在您的控制器中将 DateTime 更改为 Date :

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

希望对您有所帮助。

【讨论】:

  • 非常感谢!这对我很有帮助!
  • 还有DateTime.Today 也很好。我就这样吧。
  • 这对我不起作用。我正在渲染这样的字段:&lt;input asp-for="Birthdate" type="date" class="form-control"&gt; 对吗?
  • 这只在我还添加了 [DataType(DataType.Date)] 时才对我有用
  • @Enrico 您的评论应该是公认的答案:D
【解决方案2】:

简单实用,使用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" })

【讨论】:

    【解决方案3】:

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

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

    此 ViewBag 包含一个 DateTime 值。这种格式定义的时间消失了。无需在模型文件定义中通过 Date 更改 DateTime

    【讨论】:

      【解决方案4】:

      我也使用.ToString("d") 解决了这个问题。我收到了“MM/DD/YYYY”的输出。

      【讨论】:

        【解决方案5】:

        这可能是所问问题的错误解决方案,但我希望它可以帮助某人。如果您尝试仅输入日期(没有时间) 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】:

          我认为这是 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}">
          

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

              【解决方案8】:

              对于那些想要在视图中更改模型的日期格式而不考虑模型类的人(这是我期望回答的)。这适用于 Razorpages 和 MVC。

              只需将 .ToString("dd/MM/YYYY") 添加到您正在显示的属性中。

              例如

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

              如果您只想显示日期的一部分,比如月份和年份,这很好,但在其他地方您需要显示日期和时间。

              【讨论】:

                【解决方案9】:

                这有时可能非常有用,

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-03-21
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-07-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多