概念
广义MVC(Model--View-Controller)
V是界面 M是数据和逻辑 C是控制,把M和V链接起来
程序设计模式,一种设计理念,可以有效的分离界面和业务
狭义MVC
是web开发框架
V--Views 用户看到的视图内容
C---Controllers 决定用户使用哪个视图,还能调用逻辑计算
方法Action
M--Models 数据传递模型,普通的实体
MVC里的返回
通常情况我们可以看到在Controllers里最后都是return View,那么MVC就只是返回试图吗?答案是否定的,它可以返回html--string---json--xml--file--图片。
注意:如果返回的是JosnResult或者ActionResult 时需指定JsonRequestBehavior.AllowGet
因为默认是不支持外部Get请求的,需要修改为支持Get请求。
数据传值的多种方式
ViewBag
dynamic传值,可以随便属性访问,运行时检测
举例说明:
后台赋值:
ViewBag.TestProp = "Tenk";
前台取值:
@ViewBag.TestProp
ViewData
字典传值,里面是object,需要类型转换
举例说明:
后台赋值:
ViewData["TestProp"] = "cx";
前台取值:
@(((CurrentUser)ViewData["CurrentUserViewData"]).Name)
需要在前台页面引用命名空间
注意:如果同时使用ViewBag和ViewData二者是会覆盖的,以最后使用的为准。
Model
适合复杂数据的传递,强类型
举例说明:
后台赋值:
private List<CurrentUser> _UserList = new List<CurrentUser>()
{
new CurrentUser()
{
Id=1,
Name="Z",
Account="Administrator",
Email="177@qq.com",
LoginTime=DateTime.Now,
Password="123456"
}
};
ViewData["CurrentUserViewData"] = this._UserList[0];
前台取值:
@model CurrentUser//需要引用传递模型的命名空间
@{
ViewBag.Title = "Index";
CurrentUser userData = (CurrentUser)ViewData["CurrentUserViewData"];
}
通过 @userData.属性,可以获取到传递过来的模型里所有的属性
TempData
临时数据,可以跨action后台传递,存在session里面,用一次就清理掉。
在Return时我们不仅可以return View,还可以做页面的流转。
举例说明:
后台赋值:
TempData["TestProp"] = "Spider";//独立存储
if (id == 1 || id == 2 || id == 3)//根据条件判断,流转不同的页面
return View(this._UserList[2]);
else if (id < 10)
return View("~/Views/First/Index1.cshtml");
else
return base.RedirectToAction("TempDataShow");
前台取值:
@TempData["TestProp"]