为了演示,先定义一个类
新建基本项目在Models文件夹下定义如下类:
public class Person { public int Id { get; set; } public string Name { get; set; } public string BlogAddress { get; set; } public string Description { get; set; } }
我们在控制器的Action方法中实例化此类:
var p = new Person() { Id = 98, Name = "xpy0928", BlogAddress = "http://www.cnblogs.com/CreateMyself", Description = "出生非贫即贵,你我无能为力,后天若不加以努力赶之超之,又能怪谁呢!自己都靠不住不靠谱,又能靠谁呢!" };
方式1 (ViewData)
我们利用ViewData以键值对的形式来存储上述实例化的对象,如下:
ViewData["Person"] = p;
在视图中我们从ViewData中获取存储的值并转换成对象,如下:
@using ASP.NET_MVC_1.Models; //引用模型模块,视图中HTML中使用Razor书写格式 @+C#代码@{ var p = (Person)ViewData["Person"];}
接着我们获取对象中的值:
Person
@p.Id
//Razor视图中C#代码前加@@p.Name
@p.BlogAddress
@p.Description
运行结果如下
方式2(ViewBag)
将控制器Action方法以ViewBag创建动态表达式来进行,如下:
ViewBag.Person = p;
在视图中,我们进行如下修改:
@using ASP.NET_MVC_1.Models;@{ var p = ViewBag.Person as Person;}
获取对象值同上,我们继续看看是否如我们所预想:
方式3(Model)
var p = new Person() { Id = 98, Name = "xpy0928", BlogAddress = "http://www.cnblogs.com/CreateMyself", Description = "出生非贫即贵,你我无能为力,后天若不加以努力赶之超之,又能怪谁呢!自己都靠不住不靠谱,又能靠谁呢!" }; return View(p);
此时视图中,我们将需要得到该强类型对象: 而获取对象的值则通过Model来获取,如下:
@using ASP.NET_MVC_1.Models;@model Person;
Person
@Model.Id
@Model.Name
@Model.BlogAddress
@Model.Description
结果
方式4(TempData)
从字面意思来理解我们会误认为是临时对象,好像就使用一次就不会再用了,确实是这样吗?很显然不是这样,当然其生命周期确实很短。该对象是将数据从一个控制器的方法传递到另外一个方法上。什么意思呢?我们想象这样一个场景:当我们在控制器的Info方法上添加一个Person的信息后,我们跳转到另外一个方法TempDataObject上来显示该对象已经成功被创建。
下面我们来演示这种场景:
public ActionResult Info() { var p = new Person() { Id = 98, Name = "xpy0928", BlogAddress = "http://www.cnblogs.com/CreateMyself", Description = "出生非贫即贵,你我无能为力,后天若不加以努力赶之超之,又能怪谁呢!自己都靠不住不靠谱,又能靠谁呢!" }; //TODO 添加Person到数据库中 TempData["info"] = "提示:已经成功添加一条数据到数据库中"; return RedirectToAction("TempDataObject"); }
创建一个TempData方法,获取上面传递过来的值,如下:
public ActionResult TempDataObject() { return View(); }
在方法对应的视图获取传递过来的值:
@TempData["info"]
我们通过访问Info,观察当跳转过来到该方法时后渲染视图是否能够获取到该值:
当然在上述过程中这是利用将一个Action中的数据通过TempData传递到另外一个Action中,但是我们需注意,这是利用跳转到TempDataObject才会正确显示数据,如果我们直接刷新页面将会出现System.NullReferenceException。
方式5(Json数据)
数据存储模型Model:
public class CalendarEvent { public string id { get; set; } public DateTime start { get; set; } public DateTime end { get; set; } public string backgroundColor { get; set; } public string title { get; set; } public string allDay { get; set; } }
后台处理数据控制器Controller:
public JsonResult CalendarData() { Operation op = new Operation(); ListcalendarData = op.GetData(); return Json(calendarData, JsonRequestBehavior.AllowGet); }
前端代码,使用javascript解析Json数据