2011-08-09 50 views
2

我有一個關於在Razor視圖和打印中使用強類型模型的問題他們的屬性。在某些情況下,我可以使用MVC 3 Razor @model與使用@ Model.pName與@ Html.LabelFor(model => model.pName)打印屬性的模型

@model Namespace.Class 

@Html.LabelFor(model => model.property) 

和但它工作得很好,別人不行但這通常不會:

@Model.property 

乍一看,我不知道的差異和爲什麼例如@ Html.LabelFor(model => model.property)只是打印出屬性名稱,在這種情況下@ Model.property打印屬性的值。

我懷疑這有一個簡單的解釋,我只是沒有找到正確的搜索條件,所以如果你可以提供一個簡短的解釋或一個很好的鏈接。

回答

4

Html.LabelFor總是嘗試打印屬性名稱或屬性的元數據值。這樣,你只需要在一個地方更改元數據,而不是更新所有可能依賴該屬性的視圖。

想象一下,如果您有10次瀏覽全部參考Namespace.Class.FirstName,並且您只需在所有視圖中輸入「名字」即可。之後你意識到你需要支持其他文化,現在需要將「名字」的所有引用改爲「給定名稱」。如果您在任何地方都使用Html.LabelFor,那麼您只需更改模型。

namespace Namespace { 
    class Class { 
     [Display(Name="Given name")] 
     public string FirstName {get;set;} 
    } 
} 

現在就大功告成了,到處是你引用了與Html.LabelFor屬性將不必經過所有的代碼進行更新。此外,它更容易支持不同的語言等等。

+0

感謝您的澄清! – lko

相關問題