【发布时间】:2022-01-22 20:29:42
【问题描述】:
我还在学习MVC,不知道有没有可能,在我的应用程序中,我正在做一个excel上传任务。
所以这里上传了 Excel,我将添加到这些 Excel 数据以查看包并在视图中显示。
for (int i = 2; i <= range.Rows.Count; i++)
{
try
{
M_Employee emp = new M_Employee();
string comName = ((Microsoft.Office.Interop.Excel.Range)range.Cells[i, 1]).Text;
var tempCompanyId = (from c in db.CreateCompany where c.CompanyName == comName select c.Id).First();
emp.CompanyId = tempCompanyId;
emp.EmpNo = int.Parse(((Microsoft.Office.Interop.Excel.Range)range.Cells[i, 2]).Text);
emp.EmpName = ((Microsoft.Office.Interop.Excel.Range)range.Cells[i, 3]).Text;
string dep = ((Microsoft.Office.Interop.Excel.Range)range.Cells[i, 4]).Text;
var tempDepId = (from d in db.CreateDepartment where d.Department == dep select d.Id).First();
emp.DepId = tempDepId;
string dessig = ((Microsoft.Office.Interop.Excel.Range)range.Cells[i, 5]).Text;
var tempDessId = (from h in db.CreateDesignation where h.Designation == dessig select h.Id).First();
emp.DesignId = tempDessId;
employees.Add(emp);
}
catch (Exception ex)
{
ViewBag.Error = "Error in " + i + " record";
return View("Import");
}
}
if (employees !=null)
{
ViewBag.EmpList = employees;
return View("Import");
}
在视图中,显示用户导入的excel数据。
为了将这些数据上传到数据库表中,我创建了一个按钮,将上传操作结果映射到视图中
<input type="button" value="Upload" class="btn btn-success" onclick="location.href='@Url.Action("UploadEmployees", "M_Employee")'" />
在那个动作中,我尝试调用那些 ViewBag.EmpList 来获取相同的数据并传递给表格。
foreach (var item in ViewBag.EmpList)
{
int ComId = item.CompanyId;
int EmpNo = item.EmpNo;
string EmpName = item.EmpName;
int DepId = item.DepId;
int DesId = item.DesignId;
}
但是我得到一个错误 viewbag value is null。那么有没有其他方法可以做到这一点?
谢谢
编辑--
这是我的看法
@{
ViewBag.Title = "Import";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div>
@using (Html.BeginForm("Import", "M_Employee", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="card card-primary">
<div class="card-header">
<h1 class="card-title"><b>Upload Employees from Excel</b></h1>
</div>
<!-- /.card-header -->
<div>
<br />
@Html.Raw(ViewBag.Error)
<h4><span>Select Excel File</span></h4>
<input type="file" name="excelFile" class="btn btn-warning" />
<br />
</div>
<div class="row">
<div class="col-md-1">
<br />
<br />
<input type="submit" value="Import" class="btn btn-info" />
</div>
<div class="col-md-1">
<br />
<br />
<input type="button" value="Upload" class="btn btn-success" onclick="location.href='@Url.Action("UploadEmployees", "M_Employee")'" />
</div>
</div>
<div class="card-body p-0">
<table class="table table-striped">
<tr>
<th>Company</th>
<th>EmpId</th>
<th>EmpName</th>
<th>Department</th>
<th>Dessignation</th>
</tr>
@if (ViewBag.EmpList != null)
{
foreach (var item in ViewBag.EmpList)
{
<tr>
<td>
@item.CompanyId
</td>
<td>
@item.EmpNo
</td>
<td>
@item.EmpName
</td>
<td>
@item.DepId
</td>
<td>
@item.DesignId
</td>
</tr>
}
}
</table>
</div>
<!-- /.card-body -->
</div>
}
</div>
这是我创建的视图模型。
[NotMapped]
public class EmpExcelUploadViewModel
{
public int CompanyId { get; set; }
public int EmpNo { get; set; }
public string EmpName { get; set; }
public int EmpDep { get; set; }
public int EmpDes { get; set; }
}
【问题讨论】:
-
你也可以发布导入视图吗?
标签: c# asp.net asp.net-mvc