Asp.net core Razor页面在页面加载时设置当前日期

Asp.net core Razor页面在页面加载时设置当前日期,asp.net-core,razor-pages,Asp.net Core,Razor Pages,我是razor和.net的新手,我有一个关于ASP.net razor项目的页面,在那里我弹出一个带有表单的模式。表单中有一个日期选择器,我想在页面加载时设置系统日期,并使其保持可编辑状态。 我已经试过了 @{string dateNow=DateTime.Now.ToString(“dd-MM-yyyy”);} 它检索正确的日期,但无法显示它。如何解决此问题?您的日期应采用以下格式yyyy-MM-dd 所以看起来是这样的: 在我看来,更好的方法是: 而不是这样做 @{ string da

我是razor和.net的新手,我有一个关于ASP.net razor项目的页面,在那里我弹出一个带有表单的模式。表单中有一个日期选择器,我想在页面加载时设置系统日期,并使其保持可编辑状态。 我已经试过了

  • @{string dateNow=DateTime.Now.ToString(“dd-MM-yyyy”);}

它检索正确的日期,但无法显示它。如何解决此问题?

您的日期应采用以下格式
yyyy-MM-dd

所以看起来是这样的:


在我看来,更好的方法是:

而不是这样做

@{ string dateNow = DateTime.Now.ToString("dd MM yyyy"); }
使用构造函数设置datetime的值并删除

value=“@dateNow”

Razor页面将自动返回我们在构造函数中设置的属性值

因此,razer页面的构造函数变成:

    public DateTime Date { get; set; }
    public IndexModel(ILogger<IndexModel> logger)
    {
        _logger = logger;
        Date = DateTime.Now;
    }
public DateTime Date{get;set;}
公共索引模型(ILogger记录器)
{
_记录器=记录器;
Date=DateTime.Now;
}

大概,
Intervento.Data
是您的页面模型的
DateTime
属性?如果是这样,您应该添加一个
数据类型
属性,以指定它表示日期,而不是时间:

[DataType(DataType.Date)]
public DateTime Data { get; set; }
然后您不需要在输入上指定
类型
。标记帮助器将根据属性生成正确的值。此外,如果在属性上设置默认值:

[DataType(DataType.Date)]
public DateTime Data { get; set; } = DateTime.Now;
您也不需要设置输入的值。ASP.NET将负责将值正确格式化为输入可以使用的ISO 8601格式。因此,以下内容就足够了:

<input asp-for="intervento.Data" class="form-control" />

成功了,谢谢,我用“yyyy-MM-dd”而不是“dd-MM-yyyy”设置了ToString