如上图所示:
上面的那个
@Html.DisplayNameFor(model => model.LastName)
里面的那个类型推断不应该是
IEnumerable<ContosoUniversity.Models.Student>这个类型的吗?为什么可以这么写,mvc框架可以推断出类型为
ContosoUniversity.Models.Student
请高手解答
14 个解决方案
#1
DisplayNameFor 专门做了取元素类型的声明,你可用把 model 换成 List<T> 试一下,会报错
#2
专门取 IEnumarable<T> 元素类型的重载
#3
没看懂你在说什么,不过你页面定义的类型有问题,IEnumerable是一个迭代集合。
#4
嗯,我也猜是对DisplayNameFor对IEnumerable类型的数据做了特殊的处理,能直接推测出它里面的数据的类型
3楼的没明白么?
就是问
这里DispalyNameFor(a=>a.LastName) a推导出来的类型应该是IEnumarable<Student>,
但是实际上呢?
这个程序是对的,请说原因,最好是MSDN里面的解释!
#5
我页面定义的类型没有问题,完全可以这么定义
#6
这个方法有两个重载:
DisplayNameFor<TModel, TValue>(HtmlHelper<IEnumerable<TModel>>, Expression<Func<TModel, TValue>>)
DisplayNameFor<TModel, TValue>(HtmlHelper<TModel>, Expression<Func<TModel, TValue>>)
DisplayNameFor<TModel, TValue>(HtmlHelper<IEnumerable<TModel>>, Expression<Func<TModel, TValue>>)
DisplayNameFor<TModel, TValue>(HtmlHelper<TModel>, Expression<Func<TModel, TValue>>)
#7
现在的年轻人,连 F12 都懒得按,逼你把方法声明贴出来
#8
晕,此model非彼model
那个model是Lambda的参数。
你写成
@Html.DisplayNameFor(m => m.LastName)
它也能工作——此时你应该看清楚了,这个m和那个model根本不是一回事。
那个model是Lambda的参数。
你写成
@Html.DisplayNameFor(m => m.LastName)
它也能工作——此时你应该看清楚了,这个m和那个model根本不是一回事。
#9
model 这个类型IEnumerable<ContosoUniversity.Models.Student>
跟这个类型都可以的ContosoUniversity.Models.Student
两个都可以用的
跟这个类型都可以的ContosoUniversity.Models.Student
两个都可以用的
#10
此model非彼model
#11
@Html.DisplayNameFor(model => model.LastName)
<==>
@Html.DisplayName("LastName")
这里model可以随便命名,是lambda表达式,
也可以写成@Html.DisplayNameFor(model => Model.LastName)
<==>
@Html.DisplayName("LastName")
这里model可以随便命名,是lambda表达式,
也可以写成@Html.DisplayNameFor(model => Model.LastName)
#12
请问7楼 按 F12能出什么东西?
#13
lambda表达式我懂,你那m的类型不一样要推断出来。a b c d e f g 都行
#14
结贴了,似乎只有6楼和9楼看明白了我想问什么!
#1
DisplayNameFor 专门做了取元素类型的声明,你可用把 model 换成 List<T> 试一下,会报错
#2
专门取 IEnumarable<T> 元素类型的重载
#3
没看懂你在说什么,不过你页面定义的类型有问题,IEnumerable是一个迭代集合。
#4
嗯,我也猜是对DisplayNameFor对IEnumerable类型的数据做了特殊的处理,能直接推测出它里面的数据的类型
3楼的没明白么?
就是问
这里DispalyNameFor(a=>a.LastName) a推导出来的类型应该是IEnumarable<Student>,
但是实际上呢?
这个程序是对的,请说原因,最好是MSDN里面的解释!
#5
我页面定义的类型没有问题,完全可以这么定义
#6
这个方法有两个重载:
DisplayNameFor<TModel, TValue>(HtmlHelper<IEnumerable<TModel>>, Expression<Func<TModel, TValue>>)
DisplayNameFor<TModel, TValue>(HtmlHelper<TModel>, Expression<Func<TModel, TValue>>)
DisplayNameFor<TModel, TValue>(HtmlHelper<IEnumerable<TModel>>, Expression<Func<TModel, TValue>>)
DisplayNameFor<TModel, TValue>(HtmlHelper<TModel>, Expression<Func<TModel, TValue>>)
#7
现在的年轻人,连 F12 都懒得按,逼你把方法声明贴出来
#8
晕,此model非彼model
那个model是Lambda的参数。
你写成
@Html.DisplayNameFor(m => m.LastName)
它也能工作——此时你应该看清楚了,这个m和那个model根本不是一回事。
那个model是Lambda的参数。
你写成
@Html.DisplayNameFor(m => m.LastName)
它也能工作——此时你应该看清楚了,这个m和那个model根本不是一回事。
#9
model 这个类型IEnumerable<ContosoUniversity.Models.Student>
跟这个类型都可以的ContosoUniversity.Models.Student
两个都可以用的
跟这个类型都可以的ContosoUniversity.Models.Student
两个都可以用的
#10
此model非彼model
#11
@Html.DisplayNameFor(model => model.LastName)
<==>
@Html.DisplayName("LastName")
这里model可以随便命名,是lambda表达式,
也可以写成@Html.DisplayNameFor(model => Model.LastName)
<==>
@Html.DisplayName("LastName")
这里model可以随便命名,是lambda表达式,
也可以写成@Html.DisplayNameFor(model => Model.LastName)
#12
请问7楼 按 F12能出什么东西?
#13
lambda表达式我懂,你那m的类型不一样要推断出来。a b c d e f g 都行
#14
结贴了,似乎只有6楼和9楼看明白了我想问什么!