Это ошибка в ASP.NET 3.5? - PullRequest
       14

Это ошибка в ASP.NET 3.5?

1 голос
/ 11 февраля 2011

В ASP.NET, когда я пытаюсь добавить динамический элемент управления (включая проверку) к Placeholder или любому другому контейнеру элемента управления, имя элемента управления становится важным. Например, это очень нормально, легко добавлять код управления.

var control = LoadControl("TestUserControl.ascx");
control.ID = Guid.NewGuid().ToString();
PlaceHolder1.Controls.Add(control);

как видите, я даю подсказку для ID контроля. В среде выполнения этот код завершается сбоем, и компилятор говорит, что это ошибка javascript и сообщение об ошибке типа «;» ожидаемый символ, отсутствует ... и т. д.

Проблема очень интересная. Динамически добавленный элемент управления ASP.NET (включает проверку), вызывает ошибку из-за символа «-» в свойстве динамически именованного идентификатора (или что-либо вроде «-», «. 'И т. Д.).

Когда я уточняю свой код, например:

var control = LoadControl("TestUserControl.ascx");
control.ID = Guid.NewGuid().ToString().Replace("-", string.Empty);
PlaceHolder1.Controls.Add(control);

проблема исчезнет:)

Это ошибка в ASP.NET 3.5 ? Почему это выглядит как ошибка JavaScript на странице?

1 Ответ

2 голосов
/ 11 февраля 2011

Это не ошибка, а злоупотребление. Невозможно присвоить элементу управления идентификатор, включающий -, если вы сделали это в среде IDE, поэтому имеет смысл, что попытка сделать это динамически должна иметь непредвиденные результаты. Математические функции пронизаны такими особенностями, которые не являются ошибками. Конечно, MS, возможно, мог бы добавить функцию в свойство, которое проверяет наличие недопустимых символов в идентификаторе, прежде чем разрешить его установку, но это все равно будет ошибка времени выполнения (что у вас есть).

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