首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >mvc大写模型与小写模型

mvc大写模型与小写模型
EN

Stack Overflow用户
提问于 2014-04-25 20:58:37
回答 1查看 14.1K关注 0票数 28

我正在做一个MVC5项目,对MVC来说非常陌生。我注意到代码中的这一行:

代码语言:javascript
复制
@Html.DropDownListFor(model => model.ContractorId, Model.Contractors)

页面顶部的指令是:

代码语言:javascript
复制
@model Project.Models.ContractViewModel

ContractViewModel类中确实有一个Contractors对象。

代码语言:javascript
复制
public IEnumerable<SelectListItem> Contractors

我只是对大写的M (Model.Contractors)有点困惑,模型总是引用传递到@模型中的对象吗?那么使用model.Contractors和Model.Contractors有什么区别呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-25 21:00:42

lambda模型实际上表示类的一个实例,即您的模型模型,而表达式的别名。

当您在视图中编写@Model时,您使用的是从控制器操作传递的ContractViewModel对象,如果它不是从视图传递的,则它可以为空,并且访问模型的任何属性都会抛出空引用异常,而编写Model.Contractors您基本上是指ContractViewModel.Contractors

当你编写一个model助手时,你需要为它写一个别名,这不是强制性的,你可以写任何东西。

例如:

代码语言:javascript
复制
@Html.DropDownListFor(m=> m.ContractorId, Model.Contractors)

它只是一个别名,用于访问Html Helper中的模型属性。

当你在视图顶部编写@model Project.Models.ContractViewModel时,这是一件不同的事情,在这种情况下,我们定义了视图的模型,它将采用Project.Models.ContractViewModel的实例,实际上我们的视图现在强类型化为Project.Models.ContractViewModel类的实例。

票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23293886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档