好吧,我剛剛在MVC中發現了EditorForModel
,我想知道什麼時候應該使用它而不是EditorFor
對我的每個屬性?爲什麼當我添加一個強類型視圖時,它不會使用這個視圖並在每個屬性上構建EditorFor
?爲什麼不使用Html.EditorForModel()
我遲到了......但感謝您的信息!
好吧,我剛剛在MVC中發現了EditorForModel
,我想知道什麼時候應該使用它而不是EditorFor
對我的每個屬性?爲什麼當我添加一個強類型視圖時,它不會使用這個視圖並在每個屬性上構建EditorFor
?爲什麼不使用Html.EditorForModel()
我遲到了......但感謝您的信息!
您應該儘可能使用它,但有時您需要單獨使用Html.EditorFor
的可定製性。
至於爲什麼內置模板不使用它,主要是因爲它們通常很傻,但也因爲如果我記得它們需要在每個Html.EditorFor
周圍包裝元素(如表格行等) 。
我從來沒有使用過EditorFor,也沒有想過將來會使用它。 EditorFor假定它知道你想要什麼。你知道當你假設什麼時會發生什麼。
也許如果你正在做一個快速Mvc秒殺測試別的東西你可能會使用EditorFor。
您可以通過添加EditorTemplates自己編輯「保證」。這就是.cshtml文件,運行EditorFor方法時運行。 F.eks。如果EditorFor中的輸入是DateTime,則運行DateTime.cshtml。 –
DateTime是爲什麼我不使用EditorFor的一個很好的例子。DateTime可以僅爲日期,僅限時間或日期時間。通過將確切的輸入類型放入視圖中,我知道不必打開另一個文件如何處理日期時間字段。 – 37Stars
個人而言,我更喜歡使用數據註釋和模型元數據提供程序來控制這類事情。這意味着我的視圖可以非常簡潔,控制渲染輸出的邏輯是在一個地方。 –
@ Html.EditorForModel()?放棄寫自己的看法的樂趣? 微笑
除了有趣,做爲一種習慣是相當危險的。考慮以下常見情況 - 您的客戶表中的數據庫中有一個bool變量,比如IsMale。很明顯,你不需要默認版本(帶有複選框的IsMale) - 你可能想要一些更友好的東西,比如{select,Options ....,/ select}標籤,對吧?這就是視圖真正開始踢的地方。這就是定製。每個觀點都有一點不同。你有RAZOR引擎,最大限度地利用它!在您的視圖中,您可以覆蓋任何內容,甚至可以手動輸入您自己的整個HTML代碼塊。
EditorForModel()(沒有參數)將根據約定查找自定義EditorTemplates。該功能與使用_what_模板無關。 –
你稱之爲代碼成癮者?一個codie? – frostymarvelous
由於接受的答案是一個僅鏈接的答案(並被刪除),我以爲我實際上回答了從Brad Wilson的博客:ASP.NET MVC 2 Templates, Part 1: Introduction派生的問題。
模型表達式是操作當前模型的簡單助手。 DisplayForModel()行等價於DisplayFor(model => model)。
TL; DR可以假定爲EditorFor(model => model)
和EditorForModel()
同樣的想法;這些輔助方法實現相同的目的。 EditorForModel()
假設模型表達式是傳遞給視圖的@model
。
看看下面的模型和視圖,例如:
public class Person
{
public string Name {get; set;}
public Address MailingAddress {get; set;}
}
public class Address
{
public String Street {get; set;}
public String City {get; set;}
public String State {get; set;}
}
Create.cshtml
:
@model MyNamespace.Models.Person
/* So, you need an Editor for the Person model? */
@Html.EditorForModel()
/*the above is equivalent to @Html.EditorFor(model => model) */
/* you need to specify the Address property that the editor accepts? */
@Html.EditorFor(model => model.MailingAddress)
請看看Brad Wilson的[博客文章(HTTP:// bradwilson。 typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html) –