现在与Asp.Net MVC合作已经有一段时间了,但是我遇到了一个非常奇怪的问题.每次我创建一个模型时,我都会使用lambda表达式,如:
@Html.EditorFor(model=>model.someProperty)
为什么Asp.Net MVC使用这种类型的架构?
为什么我不能用反射传递属性?
解决方法
Lambda>反射
使用lambdas你得到:
>设计时,强类型属性选择器.
>使用内置的Visual Studio重构工具轻松进行重构.
感谢lambda,任何API都可以从属性选择器中了解很多东西:
>物业类型.
>财产的对象.
>检查属性元数据.
另外,检查方法签名(http://msdn.microsoft.com/en-us/library/ee402949(v=vs.108).aspx):
public static MvcHtmlString EditorFor<TModel,TValue>( this HtmlHelper<TModel> html,Expression<Func<TModel,TValue>> expression )
它是表达式树而不是常规lambda.这允许MVC(以及任何API)操纵表达式,以便在运行时调用它之前添加更多行为,而不会发生反射.
详细了解表达式树:
原文地址:https://www.jb51.cc/aspnet/245821.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。