Многие ascx-to-one ascx.cs ошибка в VS2008 - PullRequest
4 голосов
/ 16 марта 2010

Я разрабатываю поддержку второго языка для сайта. Поэтому я создал дубликаты файлов .ascx и .aspx для существующих ascx.cs и aspx.cs

В большинстве случаев все работает нормально .. но вдруг я получаю:

Тип 'ctrl_xxx' существует и в 'c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ d072cc72 \ b9d5698b \ App_Web_xdmblegv.dll', и в 'c: \ Windows \ Microsoft .NET \ Framework \ v2.0.50727 \ Временные файлы ASP.NET \ d072cc72 \ b9d5698b \ App_Web_gkptrzo2.dll '(перевод с русского)

ctrl_xxx ctrl = (ctrl_xxx) LoadControl("xxx.ascx");

У меня есть несколько таких строк кода ... и такая же ошибка возникает с одной из них. Но БЕЗ каких-либо изменений от меня с этими файлами. Чтобы исправить эту ошибку на какое-то время, мне нужно удалить решение и папку веб-сайта и забрать их из SS. Может быть, есть проблема с решением? Решение было переведено с 2005 года.

Ответы [ 3 ]

3 голосов
/ 16 марта 2010

Вы не должны локализовать сайт asp.net, дублируя страницы или элементы управления. Например, вы используете файлы ресурсов для конкретного языка, на которые есть ссылки на одной странице или в элементе управления. Посмотрите this , чтобы узнать, как локализовать сайты asp.net.

2 голосов
/ 16 марта 2010

Я согласен с @Joe R, копирование кода не является хорошим способом локализации. Вам может показаться, что вы зашли слишком далеко по этому пути, чтобы изменить свой подход, но в конечном итоге вы будете намного счастливее и продуктивнее с другим решением.

Как минимум, я бы переключился на другой подход для остальной части локализации, завершил бы проект, а затем вернулся бы позже и преобразовал то, что вы уже сделали, в новый метод.

Взгляните на следующее:

1 голос
/ 16 марта 2010

Если вам нужно быстрое решение проблемы, вам нужно дать новые имена всем копируемым страницам и элементам управления.Ошибка возникает из-за наличия двух пользовательских элементов управления с одним и тем же именем (точно так же, как и сказано).

Однако все остальные правы в том, что вы поступаете неправильно.Что происходит, когда вам нужно изменить какой-то код?Это потребует дополнительного обслуживания, потому что вам нужно внести изменения в двух местах.Скорее всего, вы забудете один, и в конечном итоге вы будете тратить много времени.Если вы инвестируете в использование файлов языковых ресурсов сейчас, вы сэкономите на головной боли позже.И я даже не упоминаю о возможности добавления дополнительного языка в будущем.

Редактировать

Попробуйте следующее, если вы все еще не хотитеиспользовать файлы языковых ресурсов.

  1. Поместите неязыковой код в отдельный файл .cs.Убедитесь, что он наследуется от System.Web.UI.UserControl
  2. . В ASCX 1 убедитесь, что его класс ascx.cs наследует ваш класс, созданный на шаге 1.
  3. В ASCX 2 убедитесь, что он ascx.Класс CS наследует от вашего класса, который вы создали на шаге 2.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...