2013-07-30 47 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" /> 

,從而迫使文化(我從來沒有顯示日期或貨幣 - 或任何十進制數 - 以不同的格式)。