ASP.NET MVC3多语言网站因改变文化名称而崩溃

时间:2011-09-08 12:34:17

标签: asp.net asp.net-mvc-3

在我的多语言网站web.config文件中,文化设置为“be-by”(<globalization culture="be-by" uiCulture="be-by"/>

有一个特定页面“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 ,它在表Product <中获取整数值/强> 错误消息是“索引(从零开始)必须大于或等于零且小于参数列表的大小。”

如果我转到此“create.cshtml”的 controller 中的 ActionResult 函数,我会看到“MaximumCapacity”列的“NULL”被检索到。 / p>

但问题是,这次崩溃只发生在“be-by”(国家是白俄罗斯)的文化中,而不是我用于我网站的任何其他文化。

此外,当我用另一列替换“model.Product.MaximumCapacity”时说“model.Product.AbsoluteValue”其中AbsoluteValue是一个取整数值且 ActionResult 函数显示正在检索的NULL值,应用程序不会崩溃,并且页面显示“be-by”文化正常。

1 个答案:

答案 0 :(得分:0)

我怀疑当文化设置为“be-by”时,您的数据库访问代码与数据库中的文化冲突。例如,您的C#代码可能正在使用“be-by”,但SQL Server可能使用的是另一个,例如“en-us”。

我在使用土耳其语“tr-TR”时遇到了问题,因为土耳其语有两个“大写字母I”字符,并且请求像“CITY”这样的列变得模棱两可(但“城市”工作正常。)也许你是遇到类似于“be-by”文化的东西,其中对于MaximumCapacity有些不明确但对AbsoluteValue没有。

我解决此问题的一种方法是仅更改服务器上的UI文化,而不是两种文化设置。