MVC5.0(一)

概念

广义MVC(Model--View-Controller)

V是界面  M是数据和逻辑  C是控制,把MV链接起来

程序设计模式,一种设计理念,可以有效的分离界面和业务

狭义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)

 需要在前台页面引用命名空间

注意:如果同时使用ViewBagViewData二者是会覆盖的,以最后使用的为准。

Model

适合复杂数据的传递,强类型

举例说明:

后台赋值:

    private List<CurrentUser> _UserList = new List<CurrentUser>()

        {

          new CurrentUser()

              {

                 Id=1,

                 Name="Z",

                 Account="Administrator",

                 Email="[email protected]",

                 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"]

猜你喜欢

转载自www.cnblogs.com/JohnTang/p/11042161.html