ASP.NET MVC3 RAZOR助手返回纯文本

时间:2012-02-29 20:46:24

标签: asp.net-mvc asp.net-mvc-3 razor

这是我在帮助程序类中的代码

    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();
    }

我使用

显示它

@ Html.GenerateMenu()

它完美呈现它但不是功能对象,而只是纯文本,任何帮助?

由于

3 个答案:

答案 0 :(得分:3)

因为您使用的是mvc3,所以可以使用HtmlString

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

        return new HtmlString(menu.ToString());

    }

答案 1 :(得分:1)

将您的退货类型更改为MvcHtmlString并返回new MvcHtmlString(menu.ToString());

答案 2 :(得分:1)

我建议:

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