C# 通过控制器传递多个对象以查看
我正在开发一个asp.net mvc web应用程序,其中我希望通过控制器发送两个对象以查看,现在我只发送一个对象以通过控制器查看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(我个人不喜欢这种方法)或创建一个同时包含
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类。它将成为视图中的模型属性。