Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use Tempdata to display the list

I have did the excel upload in dotnet core .I had to use tempdata to retrieve the details of the excel in list.Instead in my below code i had used Static object to retrieve the list.My code works as like this ,when i click on upload button it will display the details in the excel sheet.and when click on save it will save it to database and i need to edit in grid view using ajax call also .Help me out

My Action in controller is

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");
        }
}
like image 523
anjalin sneha Avatar asked Nov 16 '25 22:11

anjalin sneha


1 Answers

Try this, using your own list.

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>

Once you add the list to the TempData, you can retrive it from any Action or View in the same controller

like image 112
MrLu Avatar answered Nov 18 '25 20:11

MrLu



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!