Коллекция Controls не может быть изменена, потому что элемент управления содержит блоки кода (т.е. <%…%>) - PullRequest
0 голосов
/ 09 января 2012

Q:

Я хочу добавить favicon.ico в свое веб-приложение. Поэтому я добавляю значок в свое решение и пишу следующее:

Страница входа:

 <link rel="shortcut icon" href="<%=ResolveUrl("~/favicon.ico")%>"/>

все в порядке.

Главная страница других страниц:

<link rel="shortcut icon" href="<%=ResolveUrl("~/favicon.ico")%>"/>

показывает следующую ошибку:

Коллекция элементов управления не может быть изменена, поскольку элемент управления содержит блоки кода (т. е. <%…%>).

Если я вместо этого использую <%# и:

protected override void OnLoad (EventArgs e)
{
  base.OnLoad (e);
  Page.Header.DataBind ();
}

Это меньше производительности? И как исправить эту проблему?

1 Ответ

2 голосов
/ 09 января 2012

Вам не нужно использовать какую-либо форму привязки данных, просто введите runat = "server", и среда выполнения обрезает тег как GenericHtmlControl, а атрибут Url будет разрешен так же, как и обычный ASP.Net ServerControl.

<link rel="shortcut icon" runat="server" href="~/favicon.ico" />

// will render as
<link rel="shortcut icon" href="favicon.ico" />
...