передача модели из одного контроллера в Layout в MVC 3 - PullRequest
1 голос
/ 02 декабря 2011

Я создавал блоги с ASP.NET MVC 3. Я создал запись блога «Просмотреть этот список», нажимая на навигационную ссылку «Блог». Я также попытался перечислить категорию блога в макете, чтобы отобразить список категорий блогов для каждой ссылки. Проблема в том, что когда я щелкаю ссылку на список категорий блогов, она показывает ошибку времени выполнения, такую ​​как "Ссылка на объект не установлена ​​на экземпляр объекта". в этом коде страницы _Layout.

   @foreach (Tag tag in (IEnumerable<Tag>)ViewBag.tag)
     {
        <a href="@Href("~/Posts/Tags/" + tag.Name)"> @tag.Name </a> 

     }

В контроллере блогов я пропустил данные через ViewBag.

 IEnumerable<Tag> tags = from tag in model.Tags select tag;
 ViewBag.tag = tags;

Здесь я также скопировал этот код на каждый контроллер навигационной ссылки Controller для передачи данных в Layout, чтобы список категорий блогов мог появляться на всех страницах ссылок. Так как это снова «DRY». Не могли бы вы помочь мне, чтобы каждая ссылка категории блога доходила до соответствующей категории блога.

1 Ответ

1 голос
/ 02 декабря 2011

В своем блоге я немного по-другому реализовал категории тегов.

Я создал папку, которую назвал HtmlHelpers внутри моего проекта. Внутри этого у меня есть класс с именем DisplayHelpers.cs, который содержит такой код.

namespace ProjectName.HtmlHelpers
{
    public static class DisplayHelpers
    {
        public static MvcHtmlString GetTags()
        {
            var tags = from tag in model.Tags select tag;

            StringBuilder sb = new StringBuilder();

            foreach (Tag tag in tags)
            {
                sb.AppendFormat("<a href="{0}"> {1} </a>",
                     // link,
                     tag.Name);
            }

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

Теперь со страницы _Layout.cshtml, вызовите эту функцию следующим образом:

@DisplayHelpers.GetTags()

Теперь ваши теги должны появляться везде, где вы вызываете эту функцию!

Могу ли я убедить вас встроить теги привязки в неупорядоченный список? Поскольку он действует как «коллекция» ссылок тегов, размещение их в списке помогает упорядочить их в одну «сущность».

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