ASP.NET MVC3 RAZOR Помощники возвращают простой текст - PullRequest
2 голосов
/ 01 марта 2012

это мой код в классе помощников

    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 ]

3 голосов
/ 01 марта 2012

, так как вы используете mvc3, вы можете использовать HtmlString

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

        return new HtmlString(menu.ToString());

    }
1 голос
/ 01 марта 2012

Я бы предложил:

 public static MvcHtmlString GenerateMenu(this HtmlHelper helper)
 {
     ....
     return new MvcHtmlString(menu.ToString());
 }
1 голос
/ 01 марта 2012

Измените тип возврата на MvcHtmlString и верните new MvcHtmlString(menu.ToString());

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