当前位置:编程学习 > C#/ASP.NET >>

MVC教学例程中的lambda表达式问题

ASP.NET和MVC都是新入门,所以基本概念不太清楚,请教各位高手:

来源是MVC教学例程中的添加显示数据:http://www.asp.net/mvc/tutorials/mvc-5/introduction/accessing-your-models-data-from-a-controller

前面的这一行:
@Html.DisplayNameFor(model => model.Title)

用来显示model这个结构的变量名(Title),是不是用来显示左侧传入参数model的Title因此左侧的model不能改变?

后面的部分:
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Title)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ReleaseDate)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Genre)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Price)
        </td>
         <th>
            @Html.DisplayFor(modelItem => item.Rating)
        </th>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
            @Html.ActionLink("Details", "Details", { id=item.ID })  |
            @Html.ActionLink("Delete", "Delete", { id=item.ID }) 
        </td>
    </tr>
}

为什么lambda表达式的左侧可以用modelItem来表示呢?而且这些modelItem可以改为任何名字如
@Html.DisplayFor(model => item.Price)
@Html.DisplayFor(mem => item.Price)
@Html.DisplayFor(moItem => item.Price)

都可以,偏不能改成
@Html.DisplayFor(Model => item.Price) 
//或者
@Html.DisplayFor(item => item.Price)


求问为什么前后两种方法有这个不同? --------------------编程问答-------------------- http://msdn.microsoft.com/en-us/library/bb397687.aspx

1百度百科,维基百科
2msdn --------------------编程问答--------------------
引用 楼主 sxtra 的回复:
ASP.NET和MVC都是新入门,所以基本概念不太清楚,请教各位高手:

来源是MVC教学例程中的添加显示数据:http://www.asp.net/mvc/tutorials/mvc-5/introduction/accessing-your-models-data-from-a-controller

前面的这一行:
@Html.DisplayNameFor(model => model.Title)

用来显示model这个结构的变量名(Title),是不是用来显示左侧传入参数model的Title因此左侧的model不能改变?

后面的部分:
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Title)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ReleaseDate)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Genre)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Price)
        </td>
         <th>
            @Html.DisplayFor(modelItem => item.Rating)
        </th>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
            @Html.ActionLink("Details", "Details", { id=item.ID })  |
            @Html.ActionLink("Delete", "Delete", { id=item.ID }) 
        </td>
    </tr>
}

为什么lambda表达式的左侧可以用modelItem来表示呢?而且这些modelItem可以改为任何名字如
@Html.DisplayFor(model => item.Price)
@Html.DisplayFor(mem => item.Price)
@Html.DisplayFor(moItem => item.Price)

都可以,偏不能改成
@Html.DisplayFor(Model => item.Price) 
//或者
@Html.DisplayFor(item => item.Price)


求问为什么前后两种方法有这个不同?


linq 是可以自定义的,至于MVC就不太清楚了!我MVC也在学习当中
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,