4

従業員の給与の詳細を表示する小さなASP.NETMVCサイトがあります。

<td align="right">@String.Format("{0:c}", Model.Salary)</td>

私のローカルマシンでは、これは正常に表示されます(例:£66,000)が、Azureにアップロードすると、1ドル(例:$ 66,000)で表示されます。

設定するとき、私は自分の場所として西ヨーロッパを選択しましたが、これを£sで表示するには、明らかに他のことをする必要があります。何か案は?

4

3 に答える 3

19

以下のように、web.configでアプリケーションレベルで特定のカルチャを設定する必要があります

<configuration>
    <system.web>
        <globalization uiCulture="en-GB" culture="en-GB" />
    </system.web>
</configuration>

または、global.asaxファイルのApplication_PreRequestHandlerExecute()に以下を設定することもできます

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
于 2012-12-13T11:43:10.753 に答える
2

この問題はWindowsAzureとは関係ありませんが、ローカリゼーションに起因します(マシンのデフォルトのカルチャは、おそらくWindows Azureのカルチャとは異なります)。文化をen-GBに変更してみてください。

public ActionResult DoSomething()
{
    System.Threading.Thread.CurrentThread.CurrentCulture
        = new System.Globalization.CultureInfo("en-GB");
    System.Threading.Thread.CurrentThread.CurrentUICulture
         = new System.Globalization.CultureInfo("en-GB");

    ...
    model.Salary = 66.000;
    return View(model)
}
于 2012-12-13T11:21:10.667 に答える
1

AzureでMicrosoftHPCServer 2012ワーカーの役割を使用しようとすると、この問題が発生しました。主にクライアントアプリケーション内の日付フォーマットの問題のために、マシンに作業を送信したすべてのユーザーをen-USではなくen-GBに設定する必要がありました。

私の解決策は、デフォルトユーザーのNTUSER.DATファイルを修正することでした。これは、将来のすべてのユーザーが作成されるテンプレートです。この特定のワーカーロールを使用して、そのファイルはに保存されましD:\Users\Default User\NTUSER.DATたが、物理サーバーはそれをCに配置します。

フォルダオプションに移動し、[保護されたオペレーティングシステムファイルを非表示にする]をオフにして、[隠しファイルを表示する]をオンにしない限り、Windowsエクスプローラでそのファイルを表示することはできません。

次に、ユーザーレジストリキーに必要な変更を加えることができます。次にプロファイルを作成するユーザーは、それらの設定を継承します。Azureスタートアップスクリプトはローカルユーザーが作成される前に実行されるため、すべての新しいユーザーにこれらのデフォルトを継承させることができます。

これは、Azureワーカーの役割がen-USではなくen-GBを使用することを保証するPowerShellスクリプトです。

[CmdletBinding(SupportsShouldProcess=$True)]
Param(
  [string]
  $NTUserDatPath = "D:\Users\Default User\NTUSER.DAT"
  )

If(!(Test-Path $NTUserDatPath)){
   " Write-Error $NTUserDatPath incorrect"
}

REG load HKLM\TempHive $NTUserDatPath

$Default = "HKLM:\TempHive\Control Panel\International"

Set-ItemProperty -Path $Default -Name "iCountry" -Value "44" -Force
Set-ItemProperty -Path $Default -Name "Locale" -Value "00000809" -Force
Set-ItemProperty -Path $Default -Name "LocaleName" -Value "en-GB" -Force
Set-ItemProperty -Path $Default -Name "sCountry" -Value "United Kingdom" -Force
Set-ItemProperty -Path $Default -Name "sCurrency" -Value "£" -Force
Set-ItemProperty -Path $Default -Name "sLanguage" -Value "ENG" -Force
Set-ItemProperty -Path $Default -Name "sLongDate" -Value "dd MMMM yyyy" -Force
Set-ItemProperty -Path $Default -Name "sShortDate" -Value "dd/MM/yyyy" -Force
Set-ItemProperty -Path $Default -Name "sTimeFormat" -Value "HH:mm:ss" -Force
Set-ItemProperty -Path $Default -Name "sShortTime" -Value "HH:mm" -Force
Set-ItemProperty -Path $Default -Name "iDate" -Value "1" -Force
Set-ItemProperty -Path $Default -Name "iFirstDayOfWeek" -Value "0" -Force 
Set-ItemProperty -Path $Default -Name "iFirstWeekOfYear" -Value "2" -Force
Set-ItemProperty -Path $Default -Name "iMeasure" -Value "0" -Force
Set-ItemProperty -Path $Default -Name "iNegCurr" -Value "1" -Force
Set-ItemProperty -Path $Default -Name "iPaperSize" -Value "9" -Force
Set-ItemProperty -Path $Default -Name "iTime" -Value "1" -Force
Set-ItemProperty -Path $Default -Name "iTLZero" -Value "1" -Force

REG unload HKLM\TempHive 

これがGitHubのライブバージョンです

于 2016-09-12T09:59:45.903 に答える