如上图所示:
上面的那个@Html.DisplayNameFor(model => model.LastName)
里面的那个类型推断不应该是IEnumerable<ContosoUniversity.Models.Student>这个类型的吗?为什么可以这么写,mvc框架可以推断出类型为ContosoUniversity.Models.Student
请高手解答mvcasp.net框架

解决方案 »

  1.   

    DisplayNameFor 专门做了取元素类型的声明,你可用把 model 换成 List<T> 试一下,会报错
      

  2.   

    专门取 IEnumarable<T> 元素类型的重载
      

  3.   

     没看懂你在说什么,不过你页面定义的类型有问题,IEnumerable是一个迭代集合。
      

  4.   

    嗯,我也猜是对DisplayNameFor对IEnumerable类型的数据做了特殊的处理,能直接推测出它里面的数据的类型3楼的没明白么?
    就是问
    这里DispalyNameFor(a=>a.LastName) a推导出来的类型应该是IEnumarable<Student>,
    但是实际上呢?
    这个程序是对的,请说原因,最好是MSDN里面的解释!
      

  5.   

    这个方法有两个重载:
    DisplayNameFor<TModel, TValue>(HtmlHelper<IEnumerable<TModel>>, Expression<Func<TModel, TValue>>)
    DisplayNameFor<TModel, TValue>(HtmlHelper<TModel>, Expression<Func<TModel, TValue>>)
      

  6.   

    晕,此model非彼model
    那个model是Lambda的参数。你写成
    @Html.DisplayNameFor(m => m.LastName)
    它也能工作——此时你应该看清楚了,这个m和那个model根本不是一回事。
      

  7.   

    model 这个类型IEnumerable<ContosoUniversity.Models.Student>
    跟这个类型都可以的ContosoUniversity.Models.Student
    两个都可以用的
      

  8.   

    @Html.DisplayNameFor(model => model.LastName) 
    <==>
    @Html.DisplayName("LastName") 
    这里model可以随便命名,是lambda表达式,
    也可以写成@Html.DisplayNameFor(model => Model.LastName) 
      

  9.   


    lambda表达式我懂,你那m的类型不一样要推断出来。a b c d e f g 都行