ViewBag.CurrentTime等同于ViewData["CurrentTime"] 如果在ViewData["Key"]中存放一个值,那么不能使用ViewBag访问。 要使这行代码通过编译有两种办法: 一是使用ViewData["Name"] 二是把ViewBag.Name值转换为一个具体的类型:(string)ViewBag.Name
从内部实现上,ViewBag属性是按照键值对那样存放在ViewData中的,因此也可以通过方为ViewData中值来访问ViewBag的值,他们指向的引用是同一个的。 举个例子,ViewData["Index"]可以写成:ViewBag.Foo,而不需要担心编译时错误。 我们可以通过下面的例子来验证ViewBag和ViewData其实指向的对象是同一个。 的类型是 @ViewBag.GetType(); ViewData的类型是 @ViewData.GetType(); ViewBag.XXX 的值是 @ViewBag.XXX ViewData[ "XXX"]的值是 @ViewData["XXX"] @(ViewBag.XXX == ViewData["XXX"]) @(ViewBag.XXX.Equals(ViewData["XXX"])) 可以看到对ViewData["XXX"]做更改,会影响到ViewData.XXX。后续的例子有证明了他们是指向同一个引用的。 在使用ViewBag的时候,有一个好处就是不需要做类型转换。
--ViewData["other"]不存在/值为null时,选中第一项--> <! --ViewData["other"]的值属于列表项时,选中value=ViewData["deptOu"]的项--> @Html.DDLDeptOu("other", new { style --ViewData["other"]不存在/值为null时,选中value="SOHO"的项--> <! --ViewData["other"]的值不属于列表项时,选中第一项--> <! --ViewData["other"]的值属于列表项时,选中value=ViewData["other"]的项--> @Html.DDLDeptOu("other", "SOHO", new {
.NET MVC第三章、三种传值方式 目录 .NET MVC第三章、三种传值方式 ViewData 传递方法 前台接收 ViewData测试 ViewBag 传递方法 前台接收 ViewBag测试 TempData·支持夸函数 传递方法 前台接收 编辑TempDate测试 ---- ViewData ASP.NET MVC 5源代码中ControllerBase类中ViewData属性的定义: public ViewDataDictionary ViewData { get; set; } 可以看到是字典类型的,属性值object类型 public class ViewDataDictionary : IDictionary<string, object>{} 传递方法 ViewData["msg"] = "key_value的方式传值"; 前台接收 @ViewData["msg"] 直接获取即可 ViewData测试 可以看到后台传递过来的msg信息。 ViewBag ViewBag对象是ASP.NET MVC 3提供的功能,它被声明为一个dynamic类型。
从控制器到视图的传值方式 (1)Viewdata C:Viewdata["key"]="viewdata"//控制器中赋值 V:Viewdata["key"]//视图中取值 (2)Viewbag C:Tempdata["key"]="tempdata"//控制器中赋值 V:Tempdata["key"]//视图中取值 (4)Model :必须要有一个对象的实体类 ViewData.Model= 查询出的对象 V:通过强类型页面 形式为:@model 从控制器中传来的具体类型(单个对象或者集合) viewdata与viewbag区别: (1)对于普通类型 传值方式一样 (2)对于强类型 (对象)viewdata需要强制转换 第一种方式: 某对象 s=(命名空间+某对象)(viewdata["对象变量"]) 第二种方式: 某对象 s= viewdata ["对象变量"] as 命名空间+某对象) Viewdata与Tempdata的区别: (1)viewdata 传值时不能跨方法,否则值会丢失,只能是在本方法到本视图 , ViewData
本文列举以下三种,主要传递一些简单的数据,集合类型数据最好用Model对象或者JSON串 ViewBag ViewData TempData ViewBag: public ActionResult javascript var name = "@ViewData["nameTest"]"; 页面直接引入 @ViewData["nameTest"] TempData public ViewBag其实就是ViewData,只是多了一层Dynamic控制,可以说它是另一种访问ViewData的方式。 理论上ViewBag要比ViewData慢一点点,但是几乎可以忽略,所以使用何种方式完全取决于个人的爱好。 TempData的使用同ViewData和ViewBag一样,TempData也可以用来向视图传递数据,只是ViewData和ViewBag的生命周期和View相同,它们只对当前的View有用。
一、ViewData与TempData属性来向View页传递对象
上文中已经提到,使用ViewData可以将数据由Controller传递到View
在前文中我们建立了EiceController ["ViewData"] = "在这里显示ViewData";
TempData["TempData"] = "在这里显示TempData";
return ["ViewData"]%>
2:<%=TempData["TempData"]%>
</asp:Content>
注意上面的1.2不是行号,是我写的。 /Eice/Index2
显示结果为
1.
2.在这里显示TempData
这里1显示是的ViewData中的内容,2为TempData传递的内容
我们可以看到ViewData只能在当前Action 二、通过ViewData.Model来传递对象
我们先建立一个Model:EiceIndexModel.cs。
SelectList serviceList = new SelectList(allSys, "SysID", "Name", selectedVal); ViewData ["ddlDataSysid"] = serviceList; ViewData["Subject"] = string.Empty; var viewData = MessageQueries.GetAllUnSendMails(sysId, 1, 15); return View(viewData); } 相应的视图的下列列表 <% =Html.DropDownList("ddlDataSysid", (SelectList)ViewData["ddlDataSysid"])%> 问题就出在DropDownList的Name和ViewData 相同了,只要修改一下Name如下就可以了 <%=Html.DropDownList("ddlSysid", (SelectList)ViewData["ddlDataSysid"])%>
(1)ViewData是Controller的属性,此属性是继承ControllerBase而来。 ? (2)ViewPage下也有一个ViewData的一个属性 ? Controller的ViewData赋值给ViewPage页面的ViewData属性。 PS:ViweBag其实是就一个包含了一层Dynamic的ViewData,两个兄弟共用的是一个容器。 ? (5)ViewData与ViewBag的比较 ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从Asp.net MVC 1 就有了 ASP.NET MVC3 才有 基于Asp.net 3.5 framework 基于Asp.net 4.0与.net framework ViewData比ViewBag快 ViewBag比ViewData慢 在ViewPage
创建ViewData 并返回View 在ViewData中存储Employee 对象。 实验4——ViewBag的使用 ViewBag可以称为ViewData的一块关于语法的辅助的糖果,ViewBag使用C# 4.0的动态特征,使得ViewData也具有动态特性。 ViewData与ViewBag对比: ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从Asp.net MVC 1 就有了 ASP.NET MVC3 才有 如之前所说的,ViewBag只是ViewData的一块糖/ ViewData与ViewBag的问题 ViewData和ViewBag 是Contoller与View之间值传递的内容。 实验5——理解强类型View ViewData和ViewBag引起的所有问题根源都在于数据类型。参数值的数据类型是被封装在ViewData中的,称为对象。
{ get { if (_viewData == null) { _viewData = new ViewData { get { return new ViewData(_viewData); } protected internal virtual void SetViewData(object viewData) { _viewData = viewData; = vdc.ViewData; } else { _viewData = DataBinder.Eval(vdc.ViewData protected internal virtual void SetViewData(object viewData) { _viewData = viewData;
blog.csdn.net/only_yu_yy/article/details/78509091 然后在视图中调用这个方法
一、前言 1、本教程主要内容 ASP.NET Core MVC 视图引擎(Razor)简介 ASP.NET Core MVC 视图(Razor)ViewData使用示例 ASP.NET Core MVC 示例:ViewData[“ken”] 任何非 string 类型均须在视图中进行强制转换才能使用 ViewData。 Name ViewData使用示例 创建Action:ViewDataDemo public IActionResult ViewDataDemo() { ViewData["name"] = "ken"; ViewData["birthday"] = new DateTime(2000, 1, 1); ViewData["hobby"] = new string[] { "跑步 ] as String[]; }
const renderData = () => { viewData.list = []; const {rowHeight, height, startIndex, total, bufferSize} = viewData; // 当前可视区域的row条数 const limit = Math.ceil(height/rowHeight ); console.log(limit, '=limit'); // 可视区域的最后一个位置 viewData.endIndex = Math.min( startIndex + limit + bufferSize, total -1); for (let i=startIndex; i<viewData.endIndex; i++ ) { viewData.list.push({ content: i, style: { top:
@符号:Razor服务器的代码块的开始符号 类似于jquery的“$” 第二章 MVC传值: 1.从控制器方法到视图界面有四种方式: C=>V (1)Viewdata传值 格式为: C(控制器中) :Viewdata["key"]="viewdata" 。 2.viewdata与viewbag区别: (1)对于普通类型传值方式一样 (2)对于强类型(对象类)viewdata需要强制转换 ,而viewbag不需要转换 : 第一种方式: 某对象 s=(命名空间+某对象类)(viewdata["对象变量"]) 第二种方式: 某对象 s= viewdata["对象变量"] as (命名空间+某对象类) 3. Viewdata与Tempdata的区别: (1)viewdata 传值时不能跨方法,否则值会丢失,只能是在本方法到本视图 。 (2)tempdata 可以跨方法传值(取值)值不会丢失。
{ SQLiteDataAdapter da = new SQLiteDataAdapter("Select * from Products", conn); da.Fill(tbl); ViewData ["data"] = tbl; } return View(); } 然后在视图上可以这样写: <% DataTable tbl = ViewData["data"] as DataTable as DataRow)["Id"] %>
ViewBag,ViewData,ViewDataDictionary,任意强类型.. ["name"] = "ViewData测试"; ViewData.Add("age", "10"); return View(); } ["name"]
id,string name,string sex)
{
ViewData["id"] = id;
ViewData["name"] = name;
ViewData["sex"] = sex;
RenderView("Index");
}
id=<%=ViewData["id"] %>
name=<%=ViewData["name"] as string %>
sex =<%=ViewData["sex"] as string %>
</asp:Content>
(1)ViewData是Controller的属性, 此属性是继承ControllerBase而来。 中的ViewData数据会传递给ViewPage类,其实就是 把Controller的ViewData赋值给ViewPage页面的ViewData属性。 PS:ViweBag其实是就一个包含了一层Dynamic的ViewData,两个兄弟共用的是一个容器。 (5)ViewData与ViewBag的比较 ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从Asp.net MVC 1 就有了 ASP.NET MVC3 才有 基于Asp.net 3.5 framework 基于Asp.net 4.0与.net framework ViewData比ViewBag快 ViewBag比ViewData慢 在ViewPage
有这样一个json串 {"viewdata":[{"city_id":"59","position_id":0,"qd_title":"网红打卡地","list_id":35},{"city_id":" 下面介绍两种方法 法一get_json_object+正则 1.首先可以使用get_json_object函数,提取出数组,但是这个返回的是一个字符串 select get_json_object('{"viewdata ":"网红打卡地","list_id":135}, {"city_id":"39","position_id":1,"qd_title":"看青山游绿水","list_id":327}]}', '$.viewdata 刚刚得到的字符串}','(\\[|\\]|")','') 3.使用字符串分割函数split select split( regexp_replace( get_json_object('{"viewdata list_id":135}, {"city_id":"39","position_id":1,"qd_title":"看青山游绿水","list_id":327}]}', '$.viewdata