Asp.net
mvc 大寫模型與小寫模型
我正在開發一個 MVC 5 項目,對 MVC 來說非常新。我注意到程式碼中的這一行:
@Html.DropDownListFor(model => model.ContractorId, Model.Contractors)頁面頂部的指令是:
@model Project.Models.ContractViewModelContractViewModel 類中確實有一個 Contractors 對象。
public IEnumerable<SelectListItem> Contractors我只是對大寫M(Model.Contractors)有點困惑,Model是否總是引用@model中傳遞的對象?那麼使用 Model.Contractors 和 model.Contractors 有什麼區別呢?
Model實際上代表了作為模型的類的一個實例,而model是 lambda 表達式的別名。
當您
@Model在視圖中編寫時,您正在使用ContractViewModel從 Controller 操作傳遞的對象,如果它不是從 View 傳遞的,它可以為 null 並且訪問 Model 的任何屬性都可能拋出Null Reference Exception並且寫Model.Contractors你基本上是指ContractViewModel.Contractors當你寫一個 html 助手時,你需要為它寫一個別名,它不是必須寫的
model,你可以寫任何東西。例如:
@Html.DropDownListFor(m=> m.ContractorId, Model.Contractors)它只是訪問Html Helper中的模型屬性的別名。
當您
@model Project.Models.ContractViewModel在 View 的頂部編寫時,這是另一回事,在這種情況下,我們正在定義它將採用實例的視圖模型Project.Models.ContractViewModel,實際上我們的視圖現在被強類型化為 class 的實例Project.Models.ContractViewModel。