2012-02-29 3 views
2

ceci est mon code dans la classe d'aideASP.NET MVC3 RAZOR Helpers retour le texte brut

public static string GenerateMenu(this HtmlHelper helper) 
    { 
     var items = GetAllMenuItems(); 
     bool isIndex = false; 
     var currentUrl = HttpContext.Current.Request.Url; 
     StringBuilder menu = new StringBuilder(); 

     if (currentUrl.AbsolutePath == "/") 
     { 
      isIndex = true; 
     } 

     menu.AppendLine("<ul class=\"layout-menu\">"); 

     foreach (var item in items) 
     { 
      menu.Append("<li><a "); 
      if (isIndex) 
      { 
       if (items.First() == item) 
       { 
        menu.Append("class=\"menuItemSelected\" "); 
       } 
      } 
      if(currentUrl.AbsolutePath.ToLower().Contains(item.NavigateURL.ToLower())) 
      { 
       menu.Append("class=\"menuItemSelected\" "); 
      } 
      menu.Append("href=\"" + item.NavigateURL + "\">"); 
      menu.Append(item.Text); 
      menu.Append("</a></li>" + Environment.NewLine); 
     } 
     menu.AppendLine("</ul>"); 

     return menu.ToString(); 
    } 

Im l'affichage à l'aide

@ Html.GenerateMenu()

Il rend parfaitement mais pas en tant qu'objets fonctionnels mais seulement en texte clair, n'importe quelle aide?

Merci

+2

Avez-vous essayé de changer le type de retour en 'MvcHtmlString'? – Lester

Répondre

3

puisque vous utilisez MVC3 vous pouvez utiliser la HtmlString

public static HtmlString GenerateMenu(this HtmlHelper helper) 
    { 
     /* 
      your code here 
     */ 

     return new HtmlString(menu.ToString()); 

    } 
1

Changer votre type de retour à MvcHtmlString et retourner un new MvcHtmlString(menu.ToString());

1

Je suggère:

public static MvcHtmlString GenerateMenu(this HtmlHelper helper) 
{ 
    .... 
    return new MvcHtmlString(menu.ToString()); 
}