=Model.Name%" />

ASP.NET MVC 2.0 in Vs2010 :使用C# 4.0中使用动态类型来传递ViewData_开发工具_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 开发工具 > ASP.NET MVC 2.0 in Vs2010 :使用C# 4.0中使用动态类型来传递ViewData

ASP.NET MVC 2.0 in Vs2010 :使用C# 4.0中使用动态类型来传递ViewData

 2010/11/1 11:19:40    程序员俱乐部  我要评论(0)
  • 摘要:如果是在使用C#4.0的话用户可以使用Dynamic的特性来动态访问模型中的属性,例如我们也像前面使用ViewData.Model一样传递一个实例,并且我们使用了如果代码在Action的View方法中传递User的一个实例:publicActionResultMyDynamicAction(){vardemo=newUser{Name="ZouJian",Age=24};returnView(demo);}那么我们在视图中就可以调用如下代码:=Model.Id%>=Model.Name%
  • 标签:ASP.NET MVC 2.0 in Vs2010 C# 动态类型 ViewData

如果是在使用C#4.0的话用户可以使用Dynamic的特性来动态访问模型中的属性,例如我们也像前面使用ViewData.Model一样传递一个实例,并且我们使用了如果代码在Action的View方法中传递User的一个实例:

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" %>

这样就可以正常运行以及获取到值了。

优点:可以将返回不同模型类型的Action来使用同一个模板,只要你调用了它们都存在的属性或方法即可。

缺点:如果你调用了一个该类型中不存在属性或方法时,就会抛出一个RuntimeBinderException,所以在使用动态类型时我们要做好约束。

总结,这种Dynamic的方式现在还不支持智能感知,所以一旦写错属性,要等到运行时才能看到,所以它的效果与ViewData[key]的传值模式基本等价。但是由于它是DLR支持的动态类型所以使用时可以使更多的Controller使用同一View。

发表评论
用户名: 匿名