Сохранение списка в исключении броска TempData - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь сохранить список в TempData в .net core 2.1. Проблема в том, что он не выдает никакой ошибки при сохранении списка в tempdata, но после оператора return всегда выдает исключение и выдает меня в раздел ошибок вызова 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.UseCookiePolicy после app.UseMvc, но все равно не повезло. Это официальная ссылка Microsoft на документ https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-2.1#tempdata, и я уже перепробовал все, что упомянуто здесь. Что я делаю не так?

1 Ответ

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

Ваша проблема вызвана тем, что TempData не поддерживает сложный тип.

Вы можете попытаться сериализовать объект в строку и сохранить его в TempData.

TempData["Products"] = JsonConvert.SerializeObject(productList);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...