Как использовать Tempdata для отображения списка - PullRequest
1 голос
/ 01 мая 2019

Я выполнил загрузку Excel в ядре dotnet. Мне пришлось использовать tempdata для получения сведений о Excel в списке. Вместо этого в приведенном ниже коде я использовал статический объект для получения списка. Мой код работает следующим образом:когда я нажимаю на кнопку загрузки, он отображает детали в листе Excel. А при нажатии на кнопку сохранения, он сохраняет его в базу данных, и мне нужно редактировать в виде сетки, также используя вызов ajax. Помогите мне

МойДействие в контроллере:

public async Task<IActionResult> ImportEmployeeDetails(IFormFile excelfile)
{
        try
        {
            EmployeesViewModelList employeesListObject = new EmployeesViewModelList();
            List<EmployeeModel> employeesViewModelList = new List<EmployeeModel>();
            if (excelfile == null || excelfile.Length == 0)
            {
                return View(employeesListObject);
            }
            var supportedTypes = new[] { ".xls", ".xlsx" };
            var ext = Path.GetExtension(excelfile.FileName);
            if (!supportedTypes.Contains(ext))
            {
                return View(employeesListObject);
            }
            var path = Path.Combine(
                       Directory.GetCurrentDirectory(), "wwwroot",
                       "EmployeeDetails.xlsx");

            if (System.IO.File.Exists(path))
            {
                System.IO.File.Delete(path);
            }

            using (var stream = new FileStream(path, FileMode.Create))
            {
                await excelfile.CopyToAsync(stream);
            }
            FileInfo file = new FileInfo(path);
            using (ExcelPackage package = new ExcelPackage(file))
            {
                ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
                int rowCount = worksheet.Dimension.Rows;
                int ColCount = worksheet.Dimension.Columns;

                for (int i = 2; i <= rowCount; i++)
                {
                    EmployeeModel emp = new EmployeeModel();
                    emp.EmployeeId = Convert.ToInt32(worksheet.Cells[i, 1].Value.ToString());

                    emp.EmpFirstName = worksheet.Cells[i, 2].Value.ToString();
                    employeesViewModelList.Add(emp);

                }

                employeesListObject.EmpModelList = employeesViewModelList;
                return View(employeesListObject);

            }
        }
        catch(Exception ex)
        {
            TempData["Message"] = "Opps! Something Went wrong!";
            return RedirectToAction("ExcelPackage");
        }
}

1 Ответ

0 голосов
/ 02 мая 2019

Попробуйте, используя свой собственный список.

List<string> SomeList = new List<string>();

TempData["MyList"] = SomeList;

//then to get data just do 

SomeList = TempData["MyList"] as List<string>; //This converts back to List<T>

Как только вы добавите список в TempData, вы можете извлечь его из любого действия или представления в том же контроллере

...