在TempData抛出异常中存储列表

问题描述 投票:0回答:1

我试图在.net核心2.1中的TempData中存储一个列表。问题是当它将列表存储在tempdata中时它没有给出任何错误但是在返回语句之后,它总是抛出一个异常并把我扔到ajax调用的错误部分。在调用ajax调用中的错误消息时,它只是说“错误”这是控制器代码:

 IList<Product> productList = new List<Product>
 {
     new Product{ProductId=Guid.NewGuid().ToString(),Name="142525"},
     new Product{ProductId=Guid.NewGuid().ToString(),Name="122555"},
     new Product{ProductId=Guid.NewGuid().ToString(),Name="125255"}
 };

 TempData["Products"] = productList;
 return Json(productList);

Ajax请求:

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: '@Url.Action("Index", "Product")',
        success: function (result) {
             alert('All ok');
        },
        error: function (result, err) {
            debugger;
            alert('Something went wrong');
        }
    }); 
}); 

这是启动文件代码:

 services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1).AddSessionStateTempDataProvider();
 services.AddSession();

    app.UseStaticFiles();
    app.UseAuthentication();
    app.UseCookiePolicy();
    app.UseSession();
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    }); 

我也试过在app.UseMvc之后移动app.UseCookiePolicy但仍然没有运气。这是微软官方文档链接https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-2.1#tempdata,我已经尝试过这里提到的一切。我究竟做错了什么?

asp.net-core asp.net-core-2.0
1个回答
1
投票

您的问题是由TempData不支持复杂类型引起的。

您可以尝试将对象序列化为字符串并将其保存在TempData中。

TempData["Products"] = JsonConvert.SerializeObject(productList);
© www.soinside.com 2019 - 2024. All rights reserved.