先说原理:
MVC原则上是一个View对应一个Model,也就是在Controller里对View进行一次数据的传递,那么像一个网站的首页包含很多的Models的信息应该怎么传递传递进一个View呢?其实很简单,就是把很多个Model封装成一个Model类再通过Controller来传递这个Model就可以了。
用上一篇ASP.NET MVC 初学笔记.1 EF连接数据库的多种方法 里建好的实例来讲实现的方法:
1、通过EF配置连接好数据库,并建立好对应的数据库的需要的表的Models。
2、建立一个AllModels类放在Models文件夹下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace test.Models
{
public class AllModels
{
public IEnumerable<Testtable> T1 { get; set; }
public IEnumerable<Testtable2> T2 { get; set; }
public AllModels()
{
DBcontest db = new DBcontest();
this.T1= db.Testtables.ToList();
this.T2 = db.Testtable2.ToList();
}
}
}
3、新建一个AllModelsController的控制器类放在Controller文件夹下
using System.Web.Mvc;
using test.Models;
namespace test.Controllers
{
public class AllModelsController : Controller
{
public ActionResult Index()
{
AllModels all = new AllModels();
return View(all);
}
}
}
4、在View下新建AllModels文件夹建一个Index视图
@using test.Models;
@model AllModels
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
<ul>
@foreach (var item in Model.T1)
{
<li>@item.Id</li>
<li>@item.Detail</li>
}
</ul>
</div>
<div>
<ul>
@foreach (var item2 in Model.T2)
{
<li>@item2.Id</li>
<li>@item2.Detail</li>
}
</ul>
</div>
</body>
</html>
5、测试运行
其实不管多少个Models都可以封装在一个Models里,这样就可以实现一个View对应多个Models的操作。
本文介绍了ASP.NET MVC中一个View如何处理多个Models的数据。通过创建一个包含多个Models的复合Model类,并在Controller中传递该类到View,可以实现一个View显示多个数据源的信息。具体步骤包括使用EntityFramework配置数据库连接、建立复合Model类、创建对应的View并进行测试运行。

442

被折叠的 条评论
为什么被折叠?



