我正在开发一个asp.net mvc网络应用程序,其中我想通过Controller发送2个对象现在我只通过控制器发送一个对象
return View(repository.func(id));
并且在视野中我正在
<% var data = Model.First %>
但现在我很困惑如何发送2个对象以及如何获取它。
答案 0 :(得分:4)
(学习)使用ViewModel的绝佳机会:
class MyViewModel { ... }
// and in the Action:
var view = new MyViewModel();
view.First = repository.func(id) ;
view.Second = ....;
return View(view);
答案 1 :(得分:1)
您可以使用ViewBag(我个人不喜欢这种方法)或创建将同时包含两个值并将其用于视图模型的类
答案 2 :(得分:0)
我认为你的观点是强类型的,与你从中返回的类型相同:
repository.func(id)
让对象'Foo
'
假设您使用的是强类型视图:
@model Foo
您可以将其更改为:
@model IEnumerable<Foo>
然后,您的视图将强类型化为Foo
的集合(IEnumerable)在您看来,您可以这样做:
foreach(var foo in Model)
{
//Do stuff
}
当然,您的存储库方法必须返回一组对象(通过实现IEnumerable的东西 - 例如List&lt;&gt;)
答案 3 :(得分:0)
只是略微阐述了Henk的答案
class MyViewModel {
TMyEntityType1 First { get; set; }
IQueryable<TMyEntityType2> Second { get; set; }
}
然后在操作中收集您的2组数据并将其存放在MyViewModel的实例中
var viewModel = new MyViewModel();
viewModel.First = repository.func(id);
viewModel.Second = repository.containing("?");
return View(viewModel);
您可能希望将其更改为:
<% var dataFirst = Model.First;
var dataSecond = Model.Second;%>
其中Model现在是MyViewModel类型而不是repository.func(id)的返回类型