ASP.NET MVC Framework: Passing ViewData from Controllers to Views
2008-02-27 20:51
483 查看
参考:Scott Blog ASP.NET MVC Framework (Part 3): Passing ViewData from Controllers to Views
在ASP.NET MVC Framework中把ViewData从控制器传到视图的方法有通过弱类型和强类型两种,简述其用法并分析其优缺点。
1) 弱类型
通过ViewData Dictionary进行传递,视图文件继承于ViewPage
在Controller Action中对ViewData进行赋值
ViewData["ProductList"] = ...
ViewData["CategoryName"] = ...
RenderView("viewName")
在视图中调用时要对ViewData["ProductList"] 进行显示转换实际的类型
ViewData["ProductList"] as List<Product>
ViewData["CategoryName"] as string
优点:数据传输灵活
缺点:在视图中要进行显式转换
2) 强类型
视图文件继随于ViewPage<TViewData>, TViewData即为从Controller传递到Views的数据
在Controller->Action中真接RenderView("viewName", TViewData)传递数据即可
RenderView只能传递一种类型的数据,如果想传递更多类型的数据,就必须把想传递的数据封装成一个对象进行传递
优点: 不用显式转换数据
缺点: 必须写额外的对象
注:1) 仅仅对于.aspx视图才会存在所谓[弱类型]和[强类型]数据传递的区别,对于其它的视图引擎则不会区分这种情况。
2) 弱类型和强类型的数据传输只能同时使用一种传输方式,不能混合使用。
RenderView method In Controller class:
protected void RenderView(string viewName);
protected void RenderView(string viewName, object viewData);
protected void RenderView(string viewName, string masterName);
protected virtual void RenderView(string viewName, string masterName, object viewData);
在ASP.NET MVC Framework中把ViewData从控制器传到视图的方法有通过弱类型和强类型两种,简述其用法并分析其优缺点。
1) 弱类型
通过ViewData Dictionary进行传递,视图文件继承于ViewPage
在Controller Action中对ViewData进行赋值
ViewData["ProductList"] = ...
ViewData["CategoryName"] = ...
RenderView("viewName")
在视图中调用时要对ViewData["ProductList"] 进行显示转换实际的类型
ViewData["ProductList"] as List<Product>
ViewData["CategoryName"] as string
优点:数据传输灵活
缺点:在视图中要进行显式转换
2) 强类型
视图文件继随于ViewPage<TViewData>, TViewData即为从Controller传递到Views的数据
在Controller->Action中真接RenderView("viewName", TViewData)传递数据即可
RenderView只能传递一种类型的数据,如果想传递更多类型的数据,就必须把想传递的数据封装成一个对象进行传递
优点: 不用显式转换数据
缺点: 必须写额外的对象
注:1) 仅仅对于.aspx视图才会存在所谓[弱类型]和[强类型]数据传递的区别,对于其它的视图引擎则不会区分这种情况。
2) 弱类型和强类型的数据传输只能同时使用一种传输方式,不能混合使用。
RenderView method In Controller class:
protected void RenderView(string viewName);
protected void RenderView(string viewName, object viewData);
protected void RenderView(string viewName, string masterName);
protected virtual void RenderView(string viewName, string masterName, object viewData);
相关文章推荐
- ASP.NET MVC - Passing anonymous objects to MVC views and accessing them using dynamic
- Asp.net MVC中ViewData与ViewBag的使用方法(改)
- Asp.net MVC中的ViewData与ViewBag的区别
- asp.net mvc两种传值(数据)方式(viewdata/mode)
- asp.net MVC ViewData用法
- ASP.NET MVC ViewData.Eval() 方法
- Asp.Net MVC之ViewData字典与ViewModel模式
- 《Pro ASP.NET MVC 3 Framework》学习笔记之二十三【Controllers和Actions】
- Asp.net Mvc Framework 九 (View与Controller交互)
- ASP.NET MVC 入门5、View与ViewData
- [转自Scott]ASP.NET MVC框架(第三部分): 把ViewData从控制器传到视图
- asp.net mvc学习笔记1(razor,html,url辅助器,ViewData,ViewBag)
- Asp.net Mvc Framework 三 (Controller与View)
- Asp.net MVC中的ViewData与ViewBag
- asp.net MVC 如何在aspx页面的head标签里输出Key为常量的ViewData呢?
- Asp.net Mvc Framework 六 (更多的View传值及显示方式)
- ASP.NET MVC ViewData/ViewBag 简单小结
- ASP.NET MVC 下拉的使用(ViewData传递)
- ASP.NET MVC 2.0 in Vs2010 :使用C# 4.0中使用动态类型来传递ViewData
- Asp.net MVC中的ViewData与ViewBag