ASP.NET MVC之从控制器传递数据到视图
2021-01-18 21:17
标签:direct 访问 键值对 bag 回顾 model 控制 net csharp 本系列开始着手讲述ASP.NET MVC,也算是自己对基础的回顾以及进一步深入学习,保证每天发表一篇该系列文章,关于基本知识则不再叙述,园子有关文章不胜枚举,这一系列若有叙述不当或错误之处,欢迎指出以及批评。 新建基本项目在Models文件夹下定义如下类: 我们在控制器的Action方法中实例化此类: 我们利用ViewData以键值对的形式来存储上述实例化的对象,如下: 在视图中我们从ViewData中获取存储的值并转换成对象,如下: 接着我们获取对象中的值: 将控制器Action方法以ViewBag创建动态表达式来进行,如下: 在视图中,我们进行如下修改: 我们通过控制器中返回的View方法进行传递该对象,如下: 此时视图中,我们将需要得到该强类型对象: 而获取对象的值则通过Model来获取,如下: 从字面意思来理解我们会误认为是临时对象,好像就使用一次就不会再用了,确实是这样吗?很显然不是这样,当然其生命周期确实很短。该对象是将数据从一个控制器的方法传递到另外一个方法上。什么意思呢?我们想象这样一个场景:当我们在控制器的Info方法上添加一个Person的信息后,我们跳转到另外一个方法TempDataObject上来显示该对象已经成功被创建。 下面我们来演示这种场景: 创建一个TempData方法,获取上面传递过来的值,如下: 在方法对应的视图获取传递过来的值: 我们通过访问Info,观察当跳转过来到该方法时后渲染视图是否能够获取到该值 当然在上述过程中这是利用将一个Action中的数据通过TempData传递到另外一个Action中,但是我们需注意,这是利用跳转到TempDataObject才会正确显示数据,如果我们直接刷新页面将会出现System.NullReferenceException。 ASP.NET MVC之从控制器传递数据到视图 标签:direct 访问 键值对 bag 回顾 model 控制 net csharp 原文地址:https://www.cnblogs.com/zhao987/p/13339219.html 1 public class Person
2 {
3 public int Id { get; set; }
4
5 public string Name { get; set; }
6
7 public string BlogAddress { get; set; }
8
9 public string Description { get; set; }
10 }
1 var p = new Person()
2 {
3 Id = 98,
4 Name = "xpy0928",
5 BlogAddress = "http://www.cnblogs.com/CreateMyself",
6 Description = "出生非贫即贵,你我无能为力,后天若不加以努力赶之超之,又能怪谁呢!自己都靠不住不靠谱,又能靠谁呢!"
7 };
方式1 (ViewData)
ViewData["Person"] = p;
@using ASP.NET_MVC_1.Models;
@{
var p = (Person)ViewData["Person"];
}
Person
@p.Id
@p.Name
@p.BlogAddress
@p.Description
方式2(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);
@using ASP.NET_MVC_1.Models;
@model Person;
Person
@Model.Id
@Model.Name
@Model.BlogAddress
@Model.Description
方式4(TempData)
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");
}
public ActionResult TempDataObject()
{
return View();
}
@TempData["info"]
文章标题:ASP.NET MVC之从控制器传递数据到视图
文章链接:http://soscw.com/index.php/essay/43822.html