тег заголовка доступа в ссылке на объект InitializeCulture, а не на экземпляр объекта - PullRequest
0 голосов
/ 28 декабря 2011

Есть ли способ получить доступ к тегу head из InitializeCulture, чтобы я мог установить атрибут lang тега head.Я получаю ссылку на объект, не установленную для экземпляра объекта

protected override void InitializeCulture()
{
    if (Request[PostBackEventTarget] != null)
    {
        string controlID = Request[PostBackEventTarget];
        // Request.Form[Request[PostBackEventTarget]].ToString();
        string selectedValue = Request.Form[LanguageDropDownID].ToString();
        if (controlID.Equals(Request.Params.Get("__EVENTTARGET")))
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo(selectedValue);
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedValue);
            Page.Header.Attributes.Add("lang", selectedValue); // error
        }
    }
    else
    {
        string culture = (HttpContext.Current.Profile as ProfileCommon).Preferences.Culture;
        Thread.CurrentThread.CurrentCulture = new CultureInfo(culture);
        Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
        HtmlHead header = Page.Header as HtmlHead;
        header.Attributes.Add("lang", culture); // error
    }
    base.InitializeCulture();
}

Проблема заключается в доступе к тегу Head и добавлении к нему атрибутов, а также почему мой тег head по-разному выводит тег html, например

<html lang="<%= (HttpContext.Current.Profile as ProfileCommon).Preferences.Culture %>" xmlns="http://www.w3.org/1999/xhtml">
<head lang='<%= (HttpContext.Current.Profile as ProfileCommon).Preferences.Culture %>' runat="server">

вывод

<html lang="fa-IR" xmlns="http://www.w3.org/1999/xhtml">
<head lang="&lt;%= (HttpContext.Current.Profile as ProfileCommon).Preferences.Culture %>">

1 Ответ

0 голосов
/ 24 января 2012

Существует несколько способов решения проблемы.

Во-первых, прямой ответ на ваш вопрос.Используйте <%# в тегах сервера, включая теги HTML с runat="server".<%= только для простой разметки HTML.

<head lang='<%# (HttpContext.Current.Profile as ProfileCommon).Preferences.Culture %>' runat="server">

Во-вторых, в отношении установки атрибута в InitializeCulture ... Я считаю, InitializeCulture - для установки текущей культуры для запроса, а не дляразметки.Попробуйте более позднее событие, например, OnInit или OnLoad.

Наконец, и, возможно, самое важное, тег HEAD не требует атрибута lang, если он не отличается от тега HTML.lang наследуется от его родителя.Только тег HTML нуждается в атрибуте lang.

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