在我的多语言网站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”文化正常。
答案 0 :(得分:0)
我怀疑当文化设置为“be-by”时,您的数据库访问代码与数据库中的文化冲突。例如,您的C#代码可能正在使用“be-by”,但SQL Server可能使用的是另一个,例如“en-us”。
我在使用土耳其语“tr-TR”时遇到了问题,因为土耳其语有两个“大写字母I”字符,并且请求像“CITY”这样的列变得模棱两可(但“城市”工作正常。)也许你是遇到类似于“be-by”文化的东西,其中对于MaximumCapacity有些不明确但对AbsoluteValue没有。
我解决此问题的一种方法是仅更改服务器上的UI文化,而不是两种文化设置。