C# 这个带有查询报表的简单MVC应用程序缺少什么?

C# 这个带有查询报表的简单MVC应用程序缺少什么?,c#,asp.net-mvc,linq,asp.net-mvc-4,C#,Asp.net Mvc,Linq,Asp.net Mvc 4,这就是我面临的情况: 我有3个控制器,如下所示: a) 计量控制器 b) 类别控制器 c) 导航控制器 在进一步讨论之前,我最好告诉大家,我在视图(HTML页面)上有一个简单的布局,它由一列(左侧)组成,表示类别,在页面的右侧,我必须显示一组信息。信息必须根据左列所选类别(报告类型)进行更改 MetricController负责从表(Metrics表)中检索一些信息,它是: 编辑****开始 public class Metric { //just a class for IIS l

这就是我面临的情况:

我有3个控制器,如下所示: a) 计量控制器 b) 类别控制器 c) 导航控制器

在进一步讨论之前,我最好告诉大家,我在视图(HTML页面)上有一个简单的布局,它由一列(左侧)组成,表示类别,在页面的右侧,我必须显示一组信息。信息必须根据左列所选类别(报告类型)进行更改

MetricController负责从表(Metrics表)中检索一些信息,它是:

编辑****开始

   public class Metric  {   //just a class for IIS log
        //[Key]
        public int Id { get; set; }
        public string date { get; set; }
        public string time { get; set; }
        public string c_ip { get; set; }
        public string cs_username { get; set; }
        public string s_sitename { get; set; }
        public string s_computername { get; set; }
        public string s_ip { get; set; }
        AND MORE...

    }
编辑****结束

 public class MetricController : Controller {
        private IMetricRepository repository;

        public MetricController(IMetricRepository metricRepository) {
            this.repository = metricRepository;
        }

        public ViewResult List() {

            MetricsListViewModel model = new MetricsListViewModel {
                Metrics = repository.Metrics
                .OrderBy(p => p.Id)   //just few columns for now
            };

            return View(model);
        }
    }
NavController负责导航并在左列显示类别(从其表中检索),如下所示:

public class NavController : Controller  {


        private ICategoryRepository repository;
        public NavController(ICategoryRepository repo) {
            repository = repo;
        }

        public PartialViewResult Menu() {
            IEnumerable<string> categories = repository.Categories
                                                .Where(x => x.Visible == "1" /*|| x.Visible == "0"*/)
                                                .Select(x => x.CategoryName)
                                                .Distinct()
                                                .OrderBy(x => x);

            return PartialView(categories);
        }
但需要从表中加载报告名称。感谢您的帮助

问候,,
Amit

感谢您为MetricsListViewModel添加def 我想你要找的是这样的东西

public ViewResult List(string category)
{

    var viewModel = new MetricsListViewModel 
    {
        Metrics = repository.Metrics.ToList()
    };
}

更改此设置

 MetricsListViewModel viewModel = new MetricsListViewModel {
            Metrics = repository.Metrics
                .Select(p => p.cs_username)

 var viewModel = new MetricsListViewModel {
            Metrics = repository.Metrics
                .Select(p => p.cs_username).ToList();

正如,我不知道您的
MetricsListViewModel

如何定义
MetricsListViewModel
?我确实在编辑部分将其添加到了上述代码中。我正在添加Metric类,以便您更好地了解这意味着什么,请参见上文。@amitkohan,matric列表视图模型是什么样子的?我非常感谢您的帮助,但我刚刚添加了MetricsListViewModel的定义。正如您所看到的,它是IEnumerable,所以我认为出现此错误的原因是SELECT将IEnumerable返回给IEnumerable,对吗?@amitkohan,感谢您添加定义。我认为我的编辑应该是有用的编译,但当我单击类别/报告名称时,它会抛出一条错误消息:**传递到字典中的模型项的类型为“MyAnalytics.WebUI.Models.MetricsListViewModel”,但此词典需要类型为“System.Collections.Generic.IEnumerable`1[MyAnalytics.Domain.Entities.Category]”的模型项**我添加了MetricsListView的定义。是IEnumerableThanks检查我:)不,不是,问题还在吗?
 MetricsListViewModel viewModel = new MetricsListViewModel {
            Metrics = repository.Metrics
                .Select(p => p.cs_username)
 var viewModel = new MetricsListViewModel {
            Metrics = repository.Metrics
                .Select(p => p.cs_username).ToList();