2013-05-17 85 views
2

我正在關注一個ASP.net MVC 3教程,它建立了一個在線音樂商店。爲什麼我需要在這裏使用lambda表達式而不是直接使用模型對象屬性?

此代碼是Delete.cshtml視圖StoreManagerController.cs

@model MyStore.Models.Album 

@{ ViewBag.Title = "Delete";} 

<h2>Delete</h2>  
<h3>Are you sure you want to delete this?</h3> 
@Html.DisplayFor(model => model.Genre.Name) 

我想知道什麼是,在最後一行,爲什麼不能我們做這個

@Html.DisplayFor(model.Genre.Name) 

爲什麼lambda表達式在這裏使用? 謝謝

+1

也許這將有助於:http://stackoverflow.com/questions/6365633/what-is-the-html-displayfor-syntax-for –

+0

作爲一個方面說明,你可以做@ Html.Display(model.Genre .Name) –

回答

0

如果model.Genre.Name爲空,將呈現什麼類型的顯示?

由於顯示模板是根據聲明的模型類型來選擇的,因此係統需要知道聲明的類型是什麼,因爲null值在運行時沒有類型。

您還可以使用屬性來修飾模型的屬性以更改它們的顯示方式。如果僅給予一個值,系統將不知道該屬性上有哪些屬性。

+0

如果它真的是null .... lambda表達式如何修復它?我的意思是,如果它是空的,那麼我們沒有得到例外? lambda表達式如何保存一天? –

+1

@iAteABug_And_iLiked_it:由於我們使用的是lambda表達式,因此MVC可以分析該表達式正在訪問的屬性,並僅基於反射選擇並設置顯示模板。然後,如果該值確實計算爲null,則MVC只會將空模型值傳遞給該顯示模板。 – StriplingWarrior

相關問題