I have to display my details in the list view .I am storing my details in controller using viewdata and i need to use the viewdata in my view .The view part is not working.IN view part i have to use view data inside foreach and iterate through the list .Help me out!!
Previously i was storing in static list given below:
public static List<EmployeeModel> staticEmployeeViewModelList = new List<EmployeeModel>();
my controller part
public async Task<IActionResult> ImportEmployeeDetails(IFormFile excelfile)
{
try
{
EmployeesViewModelList employeesListObject = new EmployeesViewModelList();
// var 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");
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.EmpEin = worksheet.Cells[i, 1].Value.ToString();
emp.EmpFirstName = worksheet.Cells[i, 2].Value.ToString();
employeesViewModelList.Add(emp);
}
ViewData["EmployeeList"] = employeesViewModelList;
//to get data
employeesViewModelList = ViewData["EmployeeList"] as List<EmployeeModel>;//convert back to llist
staticEmployeeViewModelList = employeesViewModelList.ToList();
ViewData["EmployeeList"] = employeesViewModelList.ToList();
employeesListObject.EmpModelList = employeesViewModelList;
employeesViewModelList = ViewData["EmployeeList"] as List<EmployeeModel>;
// return View(employeesListObject);
return View(employeesListObject);
}
}
catch(Exception ex)
{
ViewData["Message"] = "Opps! Something Went wrong!";
return RedirectToAction("ExcelPackage");
}
}
My View:
我的观点 //在foreach循环中,我使用了以下代码 @foreach((列表(tempdata [" appriperist"]( { @foreach(employee.empmodellist.tolist((中的var项目( { //以上一个不起作用 ------------------------------------------------------------------------------------------------------------- 节省 empein 名 姓 电子邮件 国家
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.EmpModelList.ToList())
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.EmpEin)
</td>
<td>
@Html.DisplayFor(modelItem => item.EmpFirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.EmpLastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.EmpEmail)
</td>
<td>
@Html.DisplayFor(modelItem => item.HomeCountry)
</td>
<td>
<td><a class="edit" href="javascript:;">Edit</a></td>
<td class="EmpId" style="display:none">@Html.DisplayFor(modelItem => item.EmpEin)</td>
</td>
</tr>
}
</tbody>
</table>
</div>
}
要使用ViewData,首先我们必须使用对象将属性列表存储在控制器中。因为我们需要在视图中绑定模型类以获取列表属性我们必须直接使用该模型。
@using ECOLAB.SIP.Web.XXXXXX @*(model folder)*@
@model ECOLAB.SIP.Web.Models.XXXXXXX @*(class name inside the model folder)*@
之后,我们必须像以下
一样实现var emplist = ViewData['List'] @*(name should match with the controller)*@
var list=emplist as employeemodel @*(this is my model class name)*@
foreach(var item in list)
{
<li>@item.EmployeeName</li>
}