我有同样的问题,因为我来自罗马尼亚。这是我的解决方案:
Views/Shared/DisplayTemplates/Date.cshtml(如果不存在则创建文件夹和文件)
@model Nullable<DateTime>
@{
DateTime dt = DateTime.Now;
if (Model != null) {
dt = (System.DateTime)Model;
}
@dt.ToString("dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
}
基本上,每当您将 Html.Display 或 Html.DisplayFor 用于 DateTime(在我的示例中为空)时,它将根据此模板呈现。您还可以设置一个编辑器模板(我使用 jquery ui 的 DatePicker)。您可以在此处阅读有关 MVC 模板的更多信息
Layout.cs 中引用的脚本(因此在所有视图中都可用)
$.validator.methods.number = function (value, element) {
value = floatValue(value);
return this.optional(element) || !isNaN(value);
}
$.validator.methods.range = function (value, element, param) {
value = floatValue(value);
return this.optional(element) ||
(value >= param[0] && value <= param[1]);
}
function floatValue(value) {
return parseFloat(value.replace(",", "."));
}
这是为了修复文本框等中的小数点问题。
我并不是说这是最好的解决方案(至少在后半部分,实际替换点和逗号可能看起来很原始),但它完成了工作。我还提到我使用
<globalization enableClientBasedCulture="false" culture="ro" uiCulture="ro" />
,从而强制文化(我永远不必以不同的格式显示日期或货币 - 或任何十进制数字)。