0

我有一个必须呈现两个报告的视图。

我的行动:

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

关键绩效指标结果:

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

另一个问题是关于 return(View(tradesmenReportData,jobSortedReportData) 我可以这样做吗?在实际视图中,我必须 foreach 循环来显示报告数据集。

请帮忙?谢谢

4

4 回答 4

3

关于您的“第二个问题”:

不,你不能那样做,只有一个ModelViewData. 您应该为这种情况创建单独的视图模型(或使用类似的东西Tuple)。

于 2012-08-16T08:36:04.203 回答
2

您可以正常传递第一个模型ViewBag,然后再传递第二个模型

@model YourFirstModelClass

@{
    YourSecondModelClass model2 = ViewBag.YourSecondModel;
}

有了它,你就有了你想要的效果。

因此,当您不使用 Razor 时,您可以像这样添加主要的强类型模型:

<%@ Inherits="System.Web.Mvc.ViewPage<PrimaryModelClass>" %>

和 ViewData 中的第二个类似于 ViewBag

于 2012-08-16T08:38:34.653 回答
0

关于您的第二个问题,您可以创建一个具有两个表列的属性的模型视图类。从此模型类中,您可以查看视图页面中的数据并将数据保存在特定表中。

于 2012-09-04T10:26:51.177 回答
-1

我在网上找到了这个链接,它可以为你做。

https://weblogs.asp.net/dotnetstories/passing-multiple-models-to-a-view-in-an-asp-net-mvc-5-0-application

编辑 :-

我链接到的页面建议将对象列表传递给视图,该列表由不同的模型组成,这是示例。

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>
于 2017-12-06T15:39:12.117 回答