2011-12-27 45 views
0

有没有一种方法可以从InitializeCulture访问头标签,因此我可以设置头标签lang属性。我得到的对象引用不设置到对象InitializeCulture对象引用中的头标签而不是对象的实例

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标签和属性添加到它 和实例也为什么我的头标记输出不同的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

也许你的一小段源代码会给一些东西详细说明 – rene 2011-12-27 21:26:41

回答

0

来解决问题的几种方法。

首先,直接回答你的问题。在服务器标记中使用<%#,包括带有runat="server"的HTML标记。 <%=仅用于纯HTML标记。

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

其次,关于InitializeCulture设置属性......我相信InitializeCulture是设置当前文化的要求,而不是为标记。尝试以后的活动,例如OnInitOnLoad

最后,也许最重要的是,HEAD标记不需要lang属性,除非与HTML标记不同。 lang从其父项继承。只有HTML标记需要lang属性。

相关问题