2011-09-08 21 views
0

n個區域性設置爲「待用」(<globalization culture="be-by" uiCulture="be-by"/>ASP.NET MVC3多語種網站崩潰的改變文化名

我的多語種網站web.config文件中有一個特定的頁面「create.cshtml」說在「model.Product.MaximumCapacity」代碼下面

<tr> 
         <td> 
          @Html.LabelFor(model => model.Product.MaximumCapacity): 
         </td> 
         <td> 
          @Html.EditorFor(model => model.Product.MaximumCapacity) 
          @Html.ValidationMessageFor(model => model.Product.MaximumCapacity) 
         </td> 
        </tr> 

給定在此「model.Product.MaximumCapacity」崩潰,MaximumCapacity,它取表中的整數值產品 錯誤消息是「索引(基於零)必須大於或等於零且小於參數列表的大小。」

如果我去的ActionResult功能在這個「create.cshtml」的控制器,我看到「空」被檢索的「MaximumCapacity」一欄。

但問題是,這種崩潰是隻爲文化happenning「被逐」(國家是白俄羅斯),而不是其他任何文化我用我的網站。

此外,當我與另一列替換「model.Product.MaximumCapacity」「model.Product.AbsoluteValue」其中AbsoluteValue是取整數值和的ActionResult功能的列顯示被檢索NULL值,則應用程序不會崩潰,頁面顯示正常的「待通過」文化。

回答

0

我懷疑,當文化被設置爲‘被逐’你的數據庫訪問代碼在你的數據庫與文化衝突。例如,你的C#代碼可能使用「be-by」,但是SQL Server可能使用了另一個,比如「en-us」。

我見過用土耳其語「TR-TR」時的問題,因爲土耳其語言有兩個「大寫I」字,並要求如「CITY」一欄變得模糊(但「城市」工程確定。)也許你是遇到類似於「最大容量」而不是AbsoluteValue的「未解決」文化。

解決此問題的一種方法是通過更改服務器上的UI文化而不是兩種文化設置。