我正在开发我的第一个ASP.NET MVC应用程序,遇到了一个问题,即使在阅读整个互联网后也无法解决。
因此,我有几个视图(它们是报告),使用视图模型创建,该视图模型基于用户选择的条件进行填充。我正在尝试构建一种方法,该方法接受模型并以Excel格式导出它(使用EPPlus),但需要从这些视图之一发送模型。这是某种功能/可用性要求,而不是技术要求。用户可以运行报告,并在查看报告后单击按钮/链接,将创建他们正在查看的报告的Excel版本。我希望传递基于显示的视图的模型,因为已经完成了基于用户报告选择标准构建此特定视图模型的工作。
这一切都很好,我可以成功地从显示报告的视图传递模型到构建报告的方法中。我传递的所有数据似乎都在那里,除了其中的一组模型(IEnumerable)。 <--这就是我卡住的地方。在断点处,IEnumerable集合中没有任何项,但是在最初将视图模型创建并传递到视图时,情况绝对不是这样。
我卡住了 - 请帮忙。
视图模型:
因此,我有几个视图(它们是报告),使用视图模型创建,该视图模型基于用户选择的条件进行填充。我正在尝试构建一种方法,该方法接受模型并以Excel格式导出它(使用EPPlus),但需要从这些视图之一发送模型。这是某种功能/可用性要求,而不是技术要求。用户可以运行报告,并在查看报告后单击按钮/链接,将创建他们正在查看的报告的Excel版本。我希望传递基于显示的视图的模型,因为已经完成了基于用户报告选择标准构建此特定视图模型的工作。
这一切都很好,我可以成功地从显示报告的视图传递模型到构建报告的方法中。我传递的所有数据似乎都在那里,除了其中的一组模型(IEnumerable)。 <--这就是我卡住的地方。在断点处,IEnumerable集合中没有任何项,但是在最初将视图模型创建并传递到视图时,情况绝对不是这样。
我卡住了 - 请帮忙。
视图模型:
public class ReportViewModel
{
public int ProjectId { get; set; }
[Display(Name = "Project Name")]
public string ProjectName { get; set; }
[Display(Name = "Project #")]
public string ProjectNumber { get; set; }
public IEnumerable<SystemModel> SelectedSystems { get; set; }//has items when created and passed into the View intially, but not when the Model is passed from the View to the method/controller.
[Display(Name = "All Systems")]
public bool AllSystems { get; set; }
[Display(Name = "In Progress Systems")]
public bool InProgressSystems { get; set; }
[Display(Name = "Completed Systems")]
public bool CompletedSystems { get; set; }
[Display(Name = "Unchecked Systems")]
public bool UncheckedSystems { get; set; }
[Display(Name = "Systems with Problems - Ours")]
public bool JciIssue { get; set; }
[Display(Name = "Systems with Problems - Other's")]
public bool OtherIssue { get; set; }
[Display(Name = "Include Points with Problems")]
public bool IncludePoints { get; set; }
}
查看:
@model ProjectOps_5.ViewModels.ReportViewModel
@{
ViewBag.Title = "Software Cx Status Report";
}
<h2>Software Cx Status Report</h2>
<div>
<div>
<hr />
@Html.ActionLink("Export to Excel", "ExportExcel", Model)//call to method
//the report
方法:
public void ExportExcel(ReportViewModel model)
{
//make Excel file
}
ActionLink()
中传递其他路由值来定义您的过滤器/排序等。 - user3559349SystemModels
的某些属性传递给该方法,以便用于过滤报告所需的结果?您可以考虑在生成视图之前将集合存储在Session
中,然后在ExportExcel()
方法中从会话中读取集合。 - user3559349