我正在尝试在.net core 2.1中的TempData中存储列表。问题是,将列表存储在tempdata中时,它不会给出任何错误,但是在return语句之后,它始终会引发异常,并把我带到ajax调用的error部分。在调试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.UseCookiePolicy移到app.UseMvc之后,但还是没有运气。这是Microsoft官方文档链接https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-2.1#tempdata,我已经尝试了这里提到的所有内容。我在做什么错了?
答案 0 :(得分:1)
您的问题是由TempData
不支持复杂类型引起的。
您可以尝试将对象序列化为字符串并将其保存在TempData
中。
TempData["Products"] = JsonConvert.SerializeObject(productList);