GameStore категории в отдельную таблицу

ASP.NET
  1. 2 года назад
    Добавлено 2 года назад vitshark

    Здравствуйте!
    В приложении хочу вынести список категорий в отдельную сущность, проблема возникла с созданием категорий
    в файле _Layout.cshtml

    @Html.Action("Menu", "Nav")

    Текст ошибки:
    Исключение типа "System.Web.HttpException" возникло в System.Web.dll, но не было обработано в коде пользователя
    Дополнительные сведения: Ошибка выполнения дочернего запроса для дескриптора 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'.

    Кто подскажет, как правильно сделать, куда копать направьте.

  2. Alexandr_Erohin

    Sep 6 Администратор

    Код представления Menu.cshtml в студию

  3. Добавлено 2 года назад vitshark

    Делал все по Вашей книжке. Только вместо слово Game у меня Laptop

    @model IEnumerable<string>
    @Html.ActionLink("Домой", "List", "Laptop", 1,
        new { @class="btn btn-block btn-deafault btn-lg"})
    @foreach (var link in Model)
    {
        @Html.RouteLink(link, new
    {
        controller="Laptop",
        action="List",
        category=link,
        page=1
    }, new
    {
        @class="btn btn-block btn-default btn-lg" + (link==ViewBag.SelectedCategory ? " btn-primary": "")
    })
    }

    Вот код NavController я там тоже немного изменил код;

    public class NavController : Controller
        {
            // GET: Nav
            private ILaptopRepository repository;
            private ICategoryRepository category;
    
            public NavController(ILaptopRepository repo, ICategoryRepository cat)
            {
                repository = repo;
                category = cat;
            }
    
    
            public PartialViewResult Menu(int categoryId)
            {
                ViewBag.SelectedCategory = categoryId;
    
                /*
                IEnumerable<string> categories = repository.Laptops
                    .Select(lap => lap.Category)
                    .Distinct()
                    .OrderBy(x => x);
    */
                IEnumerable<string> categories = category.Categorys
                    .Where(p=>p.CategoryID==categoryId)
                    .Select(lap=> lap.Name)
                    .OrderBy(x=>x);
                                
        
                return PartialView(categories);
                
            }
    
        }

    переменную category переименовал в categoryId

  4. Получилось самому разобраться. Вот код NavController

    public class NavController : Controller
        {
            // GET: Nav
            private ILaptopRepository repository;
            private ICategoryRepository category;
    
            public NavController(ILaptopRepository repo, ICategoryRepository cat)
            {
                repository = repo;
                category = cat;
            }
    
    
            public PartialViewResult Menu(int categoryId=1)
            {
                ViewBag.SelectedCategory = categoryId;
                        IEnumerable<Category> categ = category.Categorys;
                 return PartialView(categ);            
            }
        }

    Menu.cshtml

    @model IEnumerable<LaptopStore.Domain.Entities.Category>
    
    @foreach (LaptopStore.Domain.Entities.Category link in Model)
    {
        @Html.RouteLink(link.Name, new
    {
        controller="Laptop",
        action="List",
        categoryId=link.CategoryID,
        page=1
    }, new
    {
        @class="btn btn-block btn-default btn-lg" + (link.CategoryID==ViewBag.SelectedCategory ? " btn-primary": "")
    })
    }

    Только с маршрутами косяк, не врубаюсь я как это исправить, при выборе категории в адресной строке показывает код
    http://localhost:57389/?categoryId=1
    Подскажите как исправить? Есть какой-нибудь материал, где объясняется это дело.
    -image-

  5. Alexandr_Erohin

    Sep 11 Администратор

    Прочитайте следующие статьи

    Шаблоны URL
    Настройки маршрутизации

  6. Спасибо за ссылки.

или зарегистрируйтесь чтобы ответить