2013-07-30 48 views
0

在我的web.config中使用此行数,2.440.5之类的数字能够正常工作 - 一般情况下所有小数位数为ViewModels
我发现这里的解决方案,如果我想在视图模型小数,我不得不改变globalization这样的:DateTime格式文化 - 如何更改它?

<globalization culture="en-us" uiCulture="pl-PL" /> 

但现在日期格式6/19/2013 10:04:18 PM - 我想欧洲格式,像19-6-2013 22:04:18。始终和自动。

当我将culture更改为pl-PL时,日期格式正确,但文本框中的小数点不起作用。(当数字为十进制时返回0)。

我该如何获得欧洲的日期时间格式和小数位数?

Regards

+0

'DateTime'没有固有的格式。当你ToString'时,你可以传入想要的文化。 – Oded

+0

我是否必须使用'ToString'将所有'DateTime'变量变成specyfic文化?这不是一个解决方案。 – whoah

+0

那么也许你可以创建自己的自定义文化信息,然后根据需要设置分隔符,并将其指定为当前文化 – V4Vendetta

回答

1

我和我来自罗马尼亚的问题非常相似。这里是我的解决方案:

查看/共享/ 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模板here

脚本(在所有视图,因此有售)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" /> 

,从而迫使文化(我从来没有显示日期或货币 - 或任何十进制数 - 以不同的格式)。