加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – mvc大写模型与小写模型

发布时间:2020-12-15 23:31:37 所属栏目:asp.Net 来源:网络整理
导读:我正在开发一个MVC 5项目,对MVC来说非常新鲜.我在代码中注意到这一行: @Html.DropDownListFor(model = model.ContractorId,Model.Contractors) 页面顶部的指令是: @model Project.Models.ContractViewModel ContractViewModel类中有一个Contractors对象. p
我正在开发一个MVC 5项目,对MVC来说非常新鲜.我在代码中注意到这一行:
@Html.DropDownListFor(model => model.ContractorId,Model.Contractors)

页面顶部的指令是:

@model Project.Models.ContractViewModel

ContractViewModel类中有一个Contractors对象.

public IEnumerable<SelectListItem> Contractors

我只是在首都M(Model.Contractors)上有点困惑,模型总是引用@model中传递的对象吗?那么使用Model.Contractors和model.Contractors之间有什么区别?

解决方法

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

当您在视图中编写@Model时,您正在使用从Controller操作传递的ContractViewModel对象,如果未从View传递,则可以为null,并访问Model的任何属性都可以抛出Null参考异常并写入Model.Contractors基本上意味着ContractViewModel.Contractors

当你编写一个html帮助器时,你需要为它写一个别名,它不是强制写模型,你可以写任何东西.

例如:

@Html.DropDownListFor(m=> m.ContractorId,Model.Contractors)

访问Html Helper中的模型属性只是一个别名.

当您在View的顶部写入@model Project.Models.ContractViewModel是另一回事,在这种情况下,我们定义了将采用Project.Models.ContractViewModel实例的视图模型,实际上我们的视图现在是强类型的到Project.Models.ContractViewModel类的实例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读