首页 > Web开发 > 详细

MVC

时间:2020-02-03 19:53:04      阅读:50      评论:0      收藏:0      [点我收藏+]

MVC流程

技术分享图片

 

 

 说明:在MVC中,客户端的所请求的URL是被映射到相应的Controller去,然后由Controller来处理业务逻辑,或许要从Model中取数据,然后再由Controller选择合适的View返回给客户端。

 

1.传值  

 ViewBag,ViewData,TempData

 **ViewBag和ViewData生命周期相同,仅对当前View有效,不同的是ViewBag的类型不再是字典的键值对结构,而是dynamic动态类型。

**ViewData是ViewDataDictionary 类型

**ViewBag是dynamic类型

public ActionResult Index()
        {
            ViewData["mytitle"] = "我是标题";
            List<string> strs = new List<string> { "China","USA","DE","US"};
            ViewData["jihe"] = strs;



            Dictionary<int, string> strss = new Dictionary<int, string>();
            strss.Add(2, "China");
            strss.Add(5, "DE");
            strss.Add(7, "US");
            ViewBag.adidasi = "阿迪达斯";
            ViewBag.jihes = strss;
            return View();
        }
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>
@foreach (var item in ViewData["jihe"] as List<string>)
{
    <li>@item</li> 
}
<hr>
@ViewBag.adidasi


@foreach (var item in ViewBag.jihes)
{
    <li>
        @item.Key":"@item.Value
    </li>
}

 

**TempData 

1) TempData保存在Session中,Controller每次执行请求的时候,会从Session中先获取TempData,而后清除Session,获取完TempData数据,虽然保存在内部字典对象中,但是其集合中的每个条目访问一次后就从字典表中删除。

2)具体代码层面,TempData获取过程是通过SessionStateTempDataProvider.LoadTempData方法从ControllerContext的Session中读取数据,而后清除Session,故TempData只能跨Controller传递一次。

3)如果我们想读取TempData的值但是又不让它被删除,可以使用TempData.Peek("Key")方法。如果想再保持一次TempData里面的值,可以使用TempData.Keep("Key").

 

2.部分视图

RenderBody()

MVC

原文:https://www.cnblogs.com/youguess/p/12256782.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!