C# 通过控制器传递多个对象以查看

C# 通过控制器传递多个对象以查看,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我正在开发一个asp.net mvc web应用程序,其中我希望通过控制器发送两个对象以查看,现在我只发送一个对象以通过控制器查看 return View(repository.func(id)); 在我看来 <% var data = Model.First %> 但现在我很困惑如何发送2个对象以及如何获取它 您可以使用ViewBag(我个人不喜欢这种方法)或创建一个同时包含这两个值的类,并将其用于视图的模型您可以使用ViewBag(我个人不喜欢这种方法)或创建一个同时包含

我正在开发一个asp.net mvc web应用程序,其中我希望通过控制器发送两个对象以查看,现在我只发送一个对象以通过控制器查看

return View(repository.func(id));
在我看来

<% var data = Model.First %>

但现在我很困惑如何发送2个对象以及如何获取它

您可以使用ViewBag(我个人不喜欢这种方法)或创建一个同时包含这两个值的类,并将其用于视图的模型

您可以使用ViewBag(我个人不喜欢这种方法)或创建一个同时包含这两个值的类,并将其用于视图的模型

学习使用ViewModel:

class MyViewModel { ... }


// and in the Action:
var view = new MyViewModel();
view.First = repository.func(id) ;
view.Second  = ....;    
return View(view);
(学习)使用ViewModel的绝佳时机:

class MyViewModel { ... }


// and in the Action:
var view = new MyViewModel();
view.First = repository.func(id) ;
view.Second  = ....;    
return View(view);

我假设您的视图是强类型的,与您从中返回的视图类型相同:

repository.func(id)
让我们说对象“
Foo

假设您使用的是强类型视图:

@model Foo
您可以将其更改为:

@model IEnumerable<Foo>

当然,您的存储库方法必须返回一个对象集合(例如通过实现IEnumerable-List的东西)

我假设您的视图是强类型的,与您从中返回的对象类型相同:

repository.func(id)
让我们说对象“
Foo

假设您使用的是强类型视图:

@model Foo
您可以将其更改为:

@model IEnumerable<Foo>

当然,您的存储库方法必须返回一个对象集合(例如通过实现IEnumerable-List的东西)

只是对Henk的答案进行了一点细化

class MyViewModel {
    TMyEntityType1 First { get; set; }
    IQueryable<TMyEntityType2> Second { get; set; }
}
在您的视图中,您可能希望将其更改为:

<% var dataFirst = Model.First; 
   var dataSecond = Model.Second;%>


其中Model现在是MyViewModel类型,而不是repository.func(id)的返回类型

class MyViewModel {
    TMyEntityType1 First { get; set; }
    IQueryable<TMyEntityType2> Second { get; set; }
}
在您的视图中,您可能希望将其更改为:

<% var dataFirst = Model.First; 
   var dataSecond = Model.Second;%>


其中模型现在是MyViewModel类型,而不是repository.func(id)的返回类型

这两个对象是同一类型的吗?ViewBag/ViewData是一个选项还是需要通过模型完成?这两个对象是同一类型的吗?ViewBag/ViewData是一个选项还是需要通过模型完成?我需要定义的类中的类MyViewModel{…}。请详细解释如何在viewmodel中获取每个对象是的,您必须编写一个MyViewModel类。它将成为我需要定义的类中View.class MyViewModel{…}内的模型属性。请详细解释如何在viewmodel中获取每个对象是的,您必须编写一个MyViewModel类。它将成为视图中的模型属性。