知识大全 ASP.NET MVC 4框架揭秘:Action的执行(1)[2]

Posted 框架

篇首语:非淡泊无以明志,非宁静无以致远。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET MVC 4框架揭秘:Action的执行(1)[2]相关的知识,希望对你有一定的参考价值。

ASP.NET MVC 4框架揭秘:Action的执行(1)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  如下面的代码片段所示 绑定到参数上的数据具有三个来源 HTTP POST Form RouteData的Values和DataTokens属性 它们都是字典结构的数据集合 如果参数类型为字符串或者简单的值类型 我们可以直接根据参数名称和Key进行匹配 对于复杂类型(比如之前例子中定义的包含Controller和Action名称的数据类型SimpleModel) 则通过反射根据类型创建新的对象 并根据属性名称与Key的匹配关系对相应的属性进行赋值

  public class DefaultModelBinder : IModelBinder

  

  public object BindModel(ControllerContext controllerContext

  stringmodelName Type modelType)

  

  if (modelType IsValueType || typeof(string) == modelType)

  

  object instance;

  if (GetValueTypeInstance(controllerContext modelName

  modelType out instance))

  

  return instance;

  ;

  returnActivator CreateInstance(modelType)

  

  objectmodelInstance = Activator CreateInstance(modelType)

  foreach (PropertyInfo property in modelType GetProperties())

  

  if (!property CanWrite || (!property PropertyType IsValueType

  &&property PropertyType!=typeof(string)))

  

  continue;

  

  objectpropertyValue;

  if (GetValueTypeInstance(controllerContext property Name

  property PropertyType out propertyValue))

  

  property SetValue(modelInstance propertyValue null)

  

  

  returnmodelInstance;

  

  private  boolGetValueTypeInstance(ControllerContext controllerContext

  stringmodelName Type modelType out object value)

  

  var form = HttpContext Current Request Form;

  string key;

  if (null != form)

  

  key = form AllKeys FirstOrDefault(k =>string Compare(k

  modelName true) == )

  if (key != null)

  

  value =  Convert ChangeType(form[key] modelType)

  return true;

  

  

  key = controllerContext RequestContext RouteData Values

   Where(item =>string Compare(item Key modelName true) == )

   Select(item =>item Key) FirstOrDefault()

  if (null != key)

  

  value = Convert ChangeType(controllerContext RequestContext

   RouteData Values[key] modelType)

  return true;

  

  key = controllerContext RequestContext RouteData DataTokens

   Where(item =>string Compare(item Key modelName true) == )

   Select(item =>item Key) FirstOrDefault()

  if (null != key)

  

  value = Convert ChangeType(controllerContext RequestContext

   RouteData DataTokens[key] modelType)

  return true;

  

  value = null;

  return false;

  

  

       返回目录 ASP NET MVC 框架揭秘

       编辑推荐

       ASP NET开发培训视频教程

       Microsoft NET框架程序设计视频教程

       Java程序性能优化 让你的Java程序更快 更稳定

       Visual C++音频/视频技术开发与实战

cha138/Article/program/net/201311/16105

相关参考

知识大全 ASP.NET MVC 4框架揭秘:Action的执行(1)[1]

ASP.NETMVC4框架揭秘:Action的执行(1)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 ASP.NET MVC 4框架揭秘

ASP.NETMVC4框架揭秘  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第章ASPNET+

知识大全 ASP.NET MVC 4框架揭秘:默认实现

ASP.NETMVC4框架揭秘:默认实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &nbs

知识大全 ASP.NET MVC 4框架揭秘:总体设计

ASP.NETMVC4框架揭秘:总体设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第章&n

知识大全 ASP.NET MVC 4框架揭秘:ControllerFactory[2]

ASP.NETMVC4框架揭秘:ControllerFactory[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 ASP.NET MVC 4框架揭秘:ControllerFactory[1]

ASP.NETMVC4框架揭秘:ControllerFactory[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 ASP.NET MVC 4框架揭秘:Controller(1)

ASP.NETMVC4框架揭秘:Controller(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ASP.NET MVC 4框架揭秘:Controller(3)

ASP.NETMVC4框架揭秘:Controller(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ASP.NET MVC 4框架揭秘:Controller(2)[2]

ASP.NETMVC4框架揭秘:Controller(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 ASP.NET MVC 4框架揭秘:Controller(2)[1]

ASP.NETMVC4框架揭秘:Controller(2)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起