ASP.NET MVC 2.0 in Vs2010 :使用C# 4.0中使用动态类型来传递ViewData
2009-12-12 19:44
986 查看
如果是在使用C#4.0的话用户可以使用Dynamic的特性来动态访问模型中的属性,例如我们也像前面使用ViewData.Model一样传递一个实例,并且我们使用了如果代码在Action的View方法中传递User的一个实例:
那么我们在视图中就可以调用如下代码:
来获取模型的值,而不对ViewPage类指定具体的Of T类型,正如:
这样就可以正常运行以及获取到值了。
优点:可以将返回不同模型类型的Action来使用同一个模板,只要你调用了它们都存在的属性或方法即可。
缺点:如果你调用了一个该类型中不存在属性或方法时,就会抛出一个RuntimeBinderException,所以在使用动态类型时我们要做好约束。
总结,这种Dynamic的方式现在还不支持智能感知,所以一旦写错属性,要等到运行时才能看到,所以它的效果与ViewData[key]的传值模式基本等价。但是由于它是DLR支持的动态类型所以使用时可以使更多的Controller使用同一View。
public ActionResult MyDynamicAction(){ var demo = new User { Name = "ZouJian", Age = 24 }; return View(demo); }
那么我们在视图中就可以调用如下代码:
<%=Model.Id %> <%=Model.Name %>
来获取模型的值,而不对ViewPage类指定具体的Of T类型,正如:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
这样就可以正常运行以及获取到值了。
优点:可以将返回不同模型类型的Action来使用同一个模板,只要你调用了它们都存在的属性或方法即可。
缺点:如果你调用了一个该类型中不存在属性或方法时,就会抛出一个RuntimeBinderException,所以在使用动态类型时我们要做好约束。
总结,这种Dynamic的方式现在还不支持智能感知,所以一旦写错属性,要等到运行时才能看到,所以它的效果与ViewData[key]的传值模式基本等价。但是由于它是DLR支持的动态类型所以使用时可以使更多的Controller使用同一View。
相关文章推荐
- ASP.NET MVC 2.0 in Vs2010 :使用C# 4.0中使用动态类型来传递ViewData
- ASP.NET MVC 2.0 in Vs2010 :使用C# 4.0中使用动态类型来传递ViewData
- ASP.NET MVC 下拉的使用(ViewData传递)
- ASP.NET MVC中viewData、viewBag和templateData的使用与区别
- Asp.net MVC中传递ViewData数据不能正确传递的问题
- ASP.NET MVC 5通过viewdata 向视图传递多个对象
- ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下
- Asp.net MVC中ViewData与ViewBag的使用方法
- ASP.NET MVC读取XML并使用ViewData显示
- VS2010使用.net 4.0中的ASP.NET MVC 2 模板建立工程后无法提交HTML代码解决方案一则
- Asp.net MVC的ViewData与ViewBag以及TemplateData的使用与区别
- Asp.net MVC中ViewData与ViewBag的使用方法(改)
- VS2010使用.net 4.0中的ASP.NET MVC 2 模板建立工程后无法提交HTML代码解决方案一则
- VS2010使用.net 4.0中的ASP.NET MVC 2 模板建立工程后无法提交HTML代码解决方案一则
- ASP.NET MVC传递Model到视图的多种方式总结(二)__关于ViewBag、ViewData和TempData的实现机制与区别
- Asp.Net MVC使用ViewData导致双引号被转义的解决方法
- VS2010使用.net 4.0中的ASP.NET MVC 2 模板建立工程后无法提交HTML代码解决方案一则
- 使用Asp.net MVC 2.0 +.NET 4.0 出现 “从客户端 ... 中检测到有潜在危险的 Request.Form 值”错误的解决办法
- How to use jquery or ajax to update razor partial view in c#/asp.net for a MVC project
- MVC architecture in ASP.Net using C# and Microsoft Data Access Application block