我有一个必须呈现两个报告的视图。
我的行动:
public ActionResult TradeUKKPIShowData(SundaysInMonthViewModel model) //show actual data in the view
{
var tradesmenReportData = _reportingService.GetTradeUKKPITradesmen(model.SelectedSunday);
var jobSortedReportData = _reportingService.GetTradeUKKPIJobSorted(model.SelectedSunday);
ViewBag.jobSortedReportDate = model.SelectedSunday;
ViewBag.addJobSortedModel = jobSortedReportData;
return View(tradesmenReportData);
}
我的第一个问题是上面两行动作。我必须通过什么? 我得到的那些行的编译错误:
'TradeUK.Services.IReportingService.GetTradeUKKPITradesmen(TradeUK.Entities.Reporting.KPIResults)'有一些无效的论点
报告所需的所有存储过程都是选择的日期/星期日
我的SundaysInMonthViewModel:
namespace TradeUK.Admin.Web.ViewModels
{
public class SundaysInMonthViewModel
{
public IEnumerable<SelectListItem> AllSundays { set; get; }
public string SelectedSunday { set; get; }
}
}
这里是IReportingServices.cs:
IEnumerable<KPIResults> GetTradeUKKPITradesmen(DateTime date);
IEnumerable<KPIResults> GetTradeUKKPIJobSorted(DateTime date);
和上面的实际方法:
public IEnumerable<KPIResults> GetTradeUKKPITradesmen(DateTime date)
{
}
public IEnumerable<KPIResults> GetTradeUKKPIJobSorted(DateTime date)
{
}
KPIResults:
namespace TradeUK.Entities.Reporting
{
public class KPIResults
{
public virtual string Title { get; set; }
public virtual int Total { get; set; }
public virtual int Week6 { get; set; }
public virtual int Week5 { get; set; }
public virtual int Week4 { get; set; }
public virtual int Week3 { get; set; }
public virtual int Week2 { get; set; }
public virtual int Week1 { get; set; }
}
}
另一个问题是返回(View(tradesmenReportData,jobSortedReportData)) 我可以这样做吗?在实际视图中,我必须使用循环来显示报告数据集。
请帮帮忙? 感谢
答案 0 :(得分:3)
关于你的“第二期”:
不,你不能这样做,Model
中只有一个ViewData
。您应该为此案例创建单独的viewmodel(或使用Tuple
)。
答案 1 :(得分:2)
您可以在ViewBag
中正常传递第一个模型,然后传递
@model YourFirstModelClass
@{
YourSecondModelClass model2 = ViewBag.YourSecondModel;
}
并且随之而来的是你想要的效果。
因此,当您不使用Razor时,可以添加主要强类型模型,如下所示:
<%@ Inherits="System.Web.Mvc.ViewPage<PrimaryModelClass>" %>
和ViewData中的第二个类似于ViewBag
答案 2 :(得分:0)
关于第二个问题,您可以创建一个具有两个表列属性的modelView类。从此模型类中,您可以在视图页面中查看数据并将数据保存在特定表中。
答案 3 :(得分:-1)
我在网上找到了这个可以为你做的链接。
编辑: -
我链接的页面建议将一个对象列表传递给视图,列表由不同的模型组成,这是示例。
public ActionResult Index()
{
List<object> model = new List<object>();
model.Add(ctx.ProductCategories.ToList());
model.Add(ctx.Products.ToList());
return View(model);
}
}
然后在视图中,您可以再次将列表分解为单个模型,这是作者给出的示例: -
@model IEnumerable<object>
@{
List<PassingMultipleModelsToAView.ProductCategory> lstPCategory = Model.ToList()[0] as List<PassingMultipleModelsToAView.ProductCategory>;
List<PassingMultipleModelsToAView.Product> lstProduct = Model.ToList()[1] as List<PassingMultipleModelsToAView.Product>;
}
<h3>Categories</h3>
<ul>
@foreach (var item in lstPCategory)
{
<li>@item.Name</li>
}
</ul>
<hr />
<h3>Products</h3>
<ul>
@foreach (var item in lstProduct)
{
<li>@item.Name-@item.Color</li>
}
</ul>