ASP.NET Core中为PageModel属性赋值并展示Excel导入数据
问题解决:在控制器中为PageModel属性赋值并展示Excel导入数据
一、当前代码的问题修正
你的控制器代码直接调用model.PhonenumbersFromExcel.AddRange(phonenumbersFromExcel)大概率会触发空引用异常——因为PageModel的PhonenumbersFromExcel属性默认是null,未初始化。
修正步骤:
初始化PageModel属性
在PageModel的构造函数里提前初始化集合:public class YourPageModel : PageModel { public List<string> PhonenumbersFromExcel { get; set; } public YourPageModel() { PhonenumbersFromExcel = new List<string>(); } }控制器中正确赋值
确认模型的集合已初始化后,替换原赋值逻辑(可按需清空原有数据再添加):// 替换原有的model.PhonenumbersFromExcel.AddRange(phonenumbersFromExcel); model.PhonenumbersFromExcel.Clear(); model.PhonenumbersFromExcel.AddRange(phonenumbersFromExcel);注:如果你的
Model是独立视图模型而非PageModel,需确保该模型的PhonenumbersFromExcel同样完成初始化,且返回视图时将模型传递给PageModel。
二、其他解决方案
方案1:用TempData临时存储(适配重定向场景)
你当前使用RedirectToAction做页面跳转,重定向会丢失当前请求的模型数据,可通过TempData暂存导入结果,在目标页面读取:
控制器修改:
// 替换model.PhonenumbersFromExcel.AddRange(phonenumbersFromExcel); TempData["ImportedPhonenumbers"] = phonenumbersFromExcel;
Edit页面PageModel读取:
public class EditFestivalPageModel : PageModel { public List<string> PhonenumbersFromExcel { get; set; } public async Task<IActionResult> OnGetAsync(int id) { PhonenumbersFromExcel = TempData["ImportedPhonenumbers"] as List<string> ?? new List<string>(); // 其他业务逻辑... return Page(); } }
方案2:直接返回视图(无需跳转)
如果不需要跳转到Edit页面,而是在当前导入页直接展示数据,可跳过重定向,直接返回视图:
// 替换return RedirectToAction("Edit", new { id = currentFestivalId }); return View("YourImportView", model);
方案3:用ViewData传递数据
直接将导入数据存入ViewData,视图读取展示:
// 控制器中 ViewData["ImportedPhonenumbers"] = phonenumbersFromExcel; // Razor视图中 @if (ViewData["ImportedPhonenumbers"] is List<string> numbers) { <ul> @foreach (var num in numbers) { <li>@num</li> } </ul> }
三、视图展示示例(基于PageModel属性)
@page @model YourPageModel <h3>导入的电话号码</h3> @if (Model.PhonenumbersFromExcel.Any()) { <table class="table"> <thead> <tr> <th>电话号码</th> </tr> </thead> <tbody> @foreach (var number in Model.PhonenumbersFromExcel) { <tr> <td>@number</td> </tr> } </tbody> </table> } else { <p>暂无导入的电话号码</p> }
内容的提问来源于stack exchange,提问作者Aref_Za
相关产品推荐
相关产品推荐

