c#-数字格式在ASP.NET Core中不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-数字格式在ASP.NET Core中不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2816字,纯文字阅读大概需要5分钟。
内容图文
![c#-数字格式在ASP.NET Core中不起作用](/upload/InfoBanner/zyjiaocheng/684/427cc095350642a4b4cdddcc79f247d3.jpg)
我尝试在我的应用程序(Azure中的.Net 4.5.2 Full Framework上运行的ASP.NET Core)中允许使用小数.该应用程序被配置为仅在Startup.cs中使用自定义DateTime格式的de-DE文化:
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; }
如果我提交表单,则使用例如我的机器是英文Windows计算机上的111,222,如果我使用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格式正常工作时遇到了类似的麻烦,但是弄清楚了,这对我来说似乎很难.
解决方法:
根据文档,您必须使用本地化中间件来设置当前的请求区域性.您必须在Configure方法中执行此操作,而不是在ConfigureService中.
我在Configure方法中做了以下事情.
var dtf = new DateTimeFormatInfo
{
ShortDatePattern = "dd.MM.yyyy",
LongDatePattern = "dd.MM.yyyy HH:mm",
ShortTimePattern = "HH:mm",
LongTimePattern = "HH:mm"
};
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")
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("de-DE"),
// Formatting numbers, dates, etc.
SupportedCultures = supportedCultures,
// UI strings that we have localized.
SupportedUICultures = supportedCultures
});
之后,我创建了样本模型.
public class TestModel
{
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:N3}")]
public float? Weight { get; set; }
}
并从UI传递了值111,112,并成功在UI和控制器级别进行了验证.
内容总结
以上是互联网集市为您收集整理的c#-数字格式在ASP.NET Core中不起作用全部内容,希望文章能够帮你解决c#-数字格式在ASP.NET Core中不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。