MVC Net Core Может ли TempData хранить Enumerables? - PullRequest
0 голосов
/ 29 сентября 2018

Запуск этого контроллера индекса выдает мне ошибки, когда я пытаюсь передать IEnumerable в Tempdata.

При отладке TempData ["ProductCategory"], похоже, хранит ожидаемые данные в Watch, но не может отобразить Html View после сохранения.Тем не менее, HTML показывает, когда я храню простое перемешивание.

    public IActionResult Index()
    {
        // This gives me http error 500
        //TempData["ProductCategory"] = productcategoryrepository.GetAllProductCategory();

        // This works at least!
        TempData["ProductCategory"] = "test"; 
        //TempData.Keep();
        return View();
    }

    public IEnumerable<ProductCategory> GetAllProductCategory()
    {
        return _context.ProductCategory.ToList();
    }

Другая информация:

public partial class ProductCategory
{

    public ProductCategory()
    {
        Product = new HashSet<Product>();
    }
    public int ProductCategoryId { get; set; }
    public string ProductCategoryName { get; set; }
    public string ProductCategoryDescription { get; set; }

    public virtual ICollection<Product> Product { get; set; }
}

public partial class Product
{
    public int ProductId { get; set; }
    public string ProductName { get; set; }
    public string ProductDescription { get; set; }
    public string ImageLocation { get; set; }

    public int? ProductCategoryId { get; set; }
    public virtual ProductCategory ProductCategory { get; set; }
}

1 Ответ

0 голосов
/ 29 сентября 2018

Чтобы иметь возможность хранить данные в сеансах или временных данных, тип должен быть сериализуемым.IEnumerable<T> не может быть сериализовано.Попробуйте вместо List<T>.

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-2.1

...