我需要自定义剃刀日期输入格式。我使用的是aspnetcore 6.0 mvc应用程序
我想要荷兰输入格式,年月日,但我只成功地获得了美国输入格式年月日。
这是表格:
@model myViewModel
<form asp-action="Edit" method="post" class="form-horizontal" role="form">
<div class="row mb-3">
<label asp-for="myDateField" class="col-md-3 col-form-label"></label>
<div class="col-md-9">
<input type="date" asp-for="myDateField" class="form-control"/>
</div>
</div>
<div class="row mb-3">
<div class="col-md-offset-3 col-md-9">
<input type="submit" class="btn btn-primary" value="save" />
</div>
</div>
</form>
这是我的视图型号:
public class myViewModel
{
[DisplayName("why won't the format change :'(")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? myDateField{ get; set; }
}
我一直在摆弄格式设置和属性。就像添加DataType属性、更改格式一样,但我没有取得任何成功。使用当前显示的这些设置甚至可以隐藏当前视图模型的mydate值。
我没想到这会如此困难。我希望找到一个全局解决方案,可以添加到Program.cs文件中,但我什么都做不到。
有人知道这里发生了什么吗?
编辑:我已经将文化设置为荷兰语,这似乎不会改变任何事情。我使用了以下内容:
var defaultCulture = new CultureInfo("nl-NL");
defaultCulture.NumberFormat.CurrencySymbol = "€";
var localizationOptions = new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture(defaultCulture),
SupportedCultures = new List<CultureInfo> { defaultCulture },
SupportedUICultures = new List<CultureInfo> { defaultCulture }
};
app.UseRequestLocalization(localizationOptions);
编辑:应答更新
正如冯瑞凯所建议的,我的系统语言设置最终由哪里负责日期格式。我不需要DisplayFormat属性。
当您收到响应时,剃刀视图中的所有C#代码都将符合html/js代码
在这种情况下,我找到了解释:在html 5中,输入日期期望RFC3339格式的中的日期
然后,将根据用户浏览器及其日历设置向用户显示日期输出。