我嘗試在我的應用程序中使用小數(ASP.NET Core在Azure中的.Net 4.5.2 Full Framework上運行)。該應用程序被配置爲只使用DE-DE文化Startup.cs用自定義DateTime格式:數字格式在ASP.NET Core中不起作用
var dtf = new DateTimeFormatInfo
{
ShortDatePattern = "dd.MM.yyyy",
LongDatePattern = "dd.MM.yyyy HH:mm",
ShortTimePattern = "HH:mm",
LongTimePattern = "HH:mm"
};
services.Configure<RequestLocalizationOptions>(
options =>
{
var supportedCultures = new List<CultureInfo>
{
//new CultureInfo("en-US") { DateTimeFormat = dtf },
//new CultureInfo("en") { DateTimeFormat = dtf },
new CultureInfo("de-DE") { DateTimeFormat = dtf },
new CultureInfo("de") { DateTimeFormat = dtf }
//new CultureInfo("en-US"),
//new CultureInfo("en"),
//new CultureInfo("de-DE"),
//new CultureInfo("de")
};
options.DefaultRequestCulture = new RequestCulture(culture: "de-DE", uiCulture: "de-DE");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
我的模型看起來像這樣,我還試圖用{0:####}這也沒有工作,以及更改類型爲「小數?」
[Display(Name = "ContainerWeight", ResourceType = typeof(SharedResource))]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:N3}")]
public float? Weight { get; set; }
如果我提交表單,如果我使用例如JavaScript驗證,則會出現錯誤。 111,222在我的機器上,這是一個en-US Windows機器,如果我使用111.222,我的控制器中會出現模型錯誤。在德國的機器上,它看起來正好相反(我問別人爲我檢查)。這是視圖的一部分:
<div class="form-group col-sm-12 col-md-6">
<label asp-for="Weight" class="col-md-3 control-label"></label>
<div class="col-md-9">
<input asp-for="Weight" class="form-control" />
<span asp-validation-for="Weight" class="text-danger" />
</div>
</div>
我有類似麻煩的DateTime格式工作,但想通了,這個人似乎對我來說很難:-)
任何想法表示讚賞。