我有controller.cs代码:
public class GroupsController : Controller
{
public ActionResult Index()
{
GroupTypeRepository groupTypeRepo = new GroupTypeRepository();
var groupTypeNames = groupTypeRepo.GetAll().ToList();
//like GroupType I have Group also so i want to pass both GroupType and Group object to my below return View("Groups", groupTypeNames);
// how can i do this?
return View("Groups", groupTypeNames);
}
我在/Model Folder in Model.cs
进行了尝试,但不是很好的方法请指导如何实现这一目标?
谢谢
答案 0 :(得分:4)
您无法从控制器操作返回多个模型。你要做的是定义一个包含所有必要信息的视图模型,然后返回这个视图模型。
例如:
public class MyViewModel
{
public List<string> GroupTypeNames { get; set; }
public string SomeOtherProperty { get; set; }
}
然后:
public ActionResult Index()
{
GroupTypeRepository groupTypeRepo = new GroupTypeRepository();
var model = new MyViewModel();
model.GroupTypeNames = groupTypeRepo.GetAll().ToList();
model.SomeOtherProperty = "some other property value";
return View("Groups", model);
}
当然,您的视图应该输入到视图模型中:
@model MyViewModel
如果您想访问某些属性:
@foreach (var item in Model.GroupTypeNames)
{
<div>@item</div>
}
或:
@model.SomeOtherProperty
答案 1 :(得分:1)
使用PartialResult您可以将复杂代码划分为多个Partials。例如,这里是代码。
public class Type1
{
public struct Test
{
}
}
public class Type2
{
}
这是我在部分
中使用的代码@using MVC5.Models
@model List<Type1.Test>
在另一部分中你可以调用type2。
现在在Controller中执行此操作
public PartialViewResult Partial1()
{
ViewData.Model = new List<Type1.Test>();
return PartialView();
}
现在在我的index.cshtml
中@{
ViewBag.Title = "Index";
}
@{
Html.Action("Partial1","Home");
}
我在我的索引ActionResult中调用了partial1。使用此实现,您可以在您拥有的每个部分结构中使用模型。
正如darin所说,拨打一个包含所有这些子数据的电话,并将它们从控制器传递给模型。
我想建议您通过ViewData或ViewBag传递View上的多个数据(ViewBag是动态的)。请参阅此帖子http://www.rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications