您的位置:首页 > 编程语言 > ASP

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: