有时需要在ASP.NET MVC4的视图的@model中使用多个类型的实例,.NET Framework 4.0版本引入的System.Tuple类可以轻松满足这个需求。
假设Person和Product是两个类型,如下是控制器代码。
- using System;
- using System.Web.Mvc;
-
- namespace Razor.Controllers
- {
- public class HomeController : Controller
- {
- Razor.Models.Product myProduct = new Models.Product { ProductID = 1, Name = "Book"};
- Razor.Models.Person myPerson = new Models.Person { PersonID = "1", Name = "Jack" };
-
- public ActionResult Index()
- {
- return View(Tuple.Create(myProduct,myPerson));
- }
-
- }
- }
如下是视图Index.cshtml的代码- @model Tuple<Razor.Models.Product, Razor.Models.Person>
- @{
- Layout = null;
- }
-
- <!DOCTYPE html>
-
- <html>
- <head>
- <meta name="viewport" content="width=device-width" />
- <title>Index</title>
- </head>
- <body>
- <div>
- @Model.Item1.Name
- </div>
- </body>
- </html>
当然,还有许多其它的方法做到上述相同效果。但上述方法直接简明,容易理解和使用。
也可以用新建一个类,把要传回的多个Model定义为类的属性,然后把整个类传给View来实现传递多个Model; public class MultiModel
{
public UserInfo ui;
public List<UserInfo> users;
//--
public MultiModel(UserInfo userinfo, List<UserInfo> userlist)
{
ui = userinfo;
users = userlist;
}
}
public ActionResult ModelMulti()
{
//-------
UserInfo user = new UserInfo();
user.ID = "亿思维MT4跟单系统";
user.Name = "亿思维软件";
user.Age = 28;
//--
MultiModel mm = new MultiModel(user, users);
//--
return View(mm);
}
@model MVCDemo.Controllers.MultiModel
@using MVCDemo.Models;
@{
ViewBag.Title = "ModelMulti";
}
<h2>ModelMulti</h2>
<hr />
I'm @Model.ui.Name, @Model.ui.Age years old!
<hr />
@foreach (UserInfo ui in @Model.users)
{
<text>@ui.Name , @ui.Age , @ui.Sex </text><br />
}
转自: http://blog.csdn.net/hulihui/article/details/48199897