【问题标题】:How to display the list using viewdata[" "] in the view?如何在视图中使用 viewdata[" "] 显示列表?
【发布时间】:2019-09-23 07:41:51
【问题描述】:
    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 [“EmployeeList”]中的var员工) { @foreach(employee.EmpModelList.ToList() 中的变量项) { // 上面那个不行 -------------------------------------------------- ---------------------- 保存 恩恩 名 姓 电子邮件 国家

                            <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>
         }

【问题讨论】:

    标签: c# model-view-controller view .net-core controller


    【解决方案1】:

    为了在视图中使用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>
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多