Есть ли способ предотвратить изменение идентификаторов элементов на главных страницах? - PullRequest
6 голосов
/ 10 мая 2009

Я смотрю на добавление мастер-страниц на существующий сайт, но обнаружил, что после этого к идентификаторам элементов добавляется код (например, ctl00_MainPageContent_).

К сожалению, это нарушает существующие скрипты на странице, которые используют исходный неизмененный идентификатор элемента.

Я понимаю, что могу заменить его на <%= Element.ClientID %>, но было бы замечательно, если бы я вообще мог отключить это поведение.

Так, я могу сохранить оригинальные идентификаторы?

Ответы [ 2 ]

5 голосов
/ 10 мая 2009

На вопрос уже был дан ответ в предыдущем сообщении: Удалить MasterPage Generated ID

Решение переопределяет событие рендеринга следующим кодом:

Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
    Dim Html As New StringWriter()
    Dim Render As New HtmlTextWriter(Html)
    MyBase.Render(Render)
    writer.Write(Html.ToString().Replace("name=""ctl00$ContentBody$", _ 
                  "name=""").Replace("id=""ctl00_ContentBody_", "id="""))
End Sub
4 голосов
/ 10 мая 2009

Вы можете переопределить ClientID и UniqueID в элементах управления. Это от здесь , статья Рика Стрэла.

public override string UniqueID
{
    get
    {
        return this.ID;
    }
}

public override string ClientID
{   
    get
    {
        return this.ID;
    }
}
...