Отдельная страница для каждого товара ASP.NET MVC

289
28 марта 2017, 10:33

Делаю учебный сайт на ASP.NET MVC, в котором на главной должен быть список товаров и отдельные страницы на каждый товар, на которые ведут ссылки из списка. Не пойму, как это осуществить. Сейчас есть страница списка, пробовал на странице списка вызывать

@model IEnumerable <TestParser.Domain.Entities.Product>
@{
    ViewBag.Title = "List";
}
@foreach(var p in Model)
{
<div class="item">
    <h3>
        @Html.ActionLink(p.Name, "Single", "Product", p.ProdID, new { @class = "navbar-brand" })
    </h3>
    @foreach(var prise in p.PriseParseResults)
    {
        <p>@prise.Result</p>
    }
</div>
}

а в контроллере соответственно

public ViewResult Single(int? prodID)
    {
        Product prod = repository.Products.Single(p => p.ProdID == prodID);
        return View(prod);
    }

но при таком подходе в контроллере выдается исключение

An exception of type 'System.InvalidOperationException' occurred in System.Core.dll but was not handled in user code

Additional information: Последовательность не содержит элементов

Answer 1

Очевидно, что на момент вызова метода Single, свойство на объекте Вашего репозитория, которое должно возвращать список всех продуктов, возвращает пустую коллекцию, т. е. Вы пытаетесь получить продукт с заданным id из коллекции, которая не содержит элементов. Перед вызовом метода Single, убедитесь, что Вы корректно инициализировали репозиторий. Например, код инициализации можно поместить в конструктор контроллера, содержащего метод Single. Приведите весь код контроллера, тогда ответ на Ваш вопрос можно уточнить.

Answer 2

Если проверить программу дебагером, видно, что аргумент, который передается в метод имеет значение null, а ссылка, генерируемая этим методом не содержит тела запроса. Вызов метода @Html.ActionLink должен быть построен следующим образом:

@Html.ActionLink(p.Name, "Single", "Product", new { prodID = p.ProdID }, null)
READ ALSO
richTextBox и много-много текста (WinForm)

richTextBox и много-много текста (WinForm)

Всем здравствуйте!

432
Преобразование столбца в строку. DataGrid. Wpf

Преобразование столбца в строку. DataGrid. Wpf

ЗдравствуйтеЕсть таблица с данными привязанная к DataGrid

316
Библиотека OpenPop не читает тело(body) письма

Библиотека OpenPop не читает тело(body) письма

Для получения писем с сервера использую библиотеку OpenPopЗаголовки и темы письма библиотека парсит нормально, но при чтении самого письма...

411
Новая служба не ответила на запрос своевременно

Новая служба не ответила на запрос своевременно

Смысл в чемСоздаю абсолютно пустую службу:

284