MVC网络核心TempData可以存储枚举吗?

时间:2018-09-29 07:44:23

标签: c# asp.net-core asp.net-core-mvc asp.net-core-2.0 tempdata

当我尝试将IEnumerable传递给Tempdata时,运行此Index控制器给我错误。

在调试时,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 :(得分:0)

要能够在会话或临时数据中存储数据,该类型必须可序列化。 IEnumerable<T>无法序列化。尝试使用List<T>

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