Пользовательский помощник .NET MVC неправильно отображает в макете - PullRequest
0 голосов
/ 02 августа 2011

Я прочитал все пошаговые руководства и примеры, которые могу найти, и не могу понять, чего не хватает.

Мой помощник ...

namespace MVCShop.Helpers
{
    public class RenderNav
    {
        public static MvcHtmlString GetCategoryNav(string store)
        {
            MVCShopEntities db = new MVCShopEntities();

            IEnumerable<Category> categories = db.Categories.Where(c => c.Store.Name == store);
            StringBuilder sb = new StringBuilder();

            foreach (Category cat in categories)
            {
                sb.AppendFormat("<ul id='menu'><li>{0}</li></ul>", cat.Name);
            }

            return new MvcHtmlString(sb.ToString());
        }
    }
}

В моем _Layout,Я добавил эту строку ...

    <nav>
            @{ RenderNav.GetCategoryNav(ViewContext.RouteData.Values["storeName"].ToString()); }
    </nav>

Я прошел через код.Строка правильно создается и возвращается функцией.Все строит, и нет ошибок времени выполнения.HTML меню просто не отображается на странице.Я в тупике.

1 Ответ

1 голос
/ 02 августа 2011

Вы не пишете значение, вы просто вызываете метод.
Значение генерируется и затем изящно игнорируется .

Снимите скобки (которые используются для блоков кода и не выводят никакого содержимого) и точку с запятой:

<nav>
    @RenderNav.GetCategoryNav(ViewContext.RouteData.Values["storeName"].ToString())
</nav>

Это скажет Razor на вывод результат метода и отобразит вашу навигацию.

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