ASP.NET MVC3 Многоязычный сбой веб-сайта при изменении названия культуры - PullRequest
0 голосов
/ 08 сентября 2011

в файле 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 Сообщение об ошибке: "Индекс (на основе нуля) должен быть больше или равен нулю и меньше размера списка аргументов."

Если я перейду к функции ActionResult в контроллере этого "create.cshtml", я вижу, что "NULL" извлекается для "MaximumCapacity"колонка.

Но проблема в том, что этот сбой происходит только для культуры "be-by" (Страна Беларусь), а не для любой другой культуры, которую я использую для своего веб-сайта.

Далее, когда я заменяю "model.Product.MaximumCapacity" на другой столбец, скажем "model.Product.AbsoluteValue ", где AbsoluteValue - столбец, принимающий целочисленные значения, а функция ActionResult показывает извлекаемые значения NULL, приложение не падает, и страница отлично отображается для культуры" be-by ".

1 Ответ

0 голосов
/ 08 сентября 2011

Я подозреваю, что, когда культура установлена ​​как "be-by", ваш код доступа к базе данных конфликтует с культурой в вашей базе данных.Например, ваш код C # может использовать «be-by», но SQL Server может использовать другой, скажем «en-us».

Я видел проблемы при использовании турецкого «tr-TR»потому что в турецком языке есть два символа «верхнего регистра I», и запрос столбца типа «CITY» становится неоднозначным (но «city» работает нормально.) Возможно, вы сталкиваетесь с чем-то похожим с культурой «be-by», где есть что-то неоднозначноедля MaximumCapacity, но не для AbsoluteValue.

Один из способов, с помощью которого я обошел это, - изменяя только серверную культуру на сервере, а не обе настройки культуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...