我想知道HTML助手之間是否存在顯着的性能差異,或者直接使用Razor視圖引擎和本地方法(如Html.LabelFor(),Html.TextBoxFor())來構建視圖。使用HTML Helper創建視圖比使用直接HTML更好?考慮性能
有沒有我應該避免使用HtmlHelpers(性能明智)的情況?
我想知道HTML助手之間是否存在顯着的性能差異,或者直接使用Razor視圖引擎和本地方法(如Html.LabelFor(),Html.TextBoxFor())來構建視圖。使用HTML Helper創建視圖比使用直接HTML更好?考慮性能
有沒有我應該避免使用HtmlHelpers(性能明智)的情況?
只要你按照他們應該使用的方式使用幫手,對於設計者來說,學習如何使用它應該是相當微不足道的。請記住,目標是保持簡單,如果它們最終使事情變得更加複雜,就意味着它們沒有被正確使用。
的性能差異可以忽略不計
我沒有關於性能的答案,但我確實有一個答案,你的最後一個問題。
有沒有我應該避免使用HtmlHelpers的情況?
在我們的項目中,我們傾向於避免使用HtmlHelpers,因爲靜態方法(如Html助手擴展方法)很難以我們想要的方式進行單元測試。
我們沒有使用HTML Helpers(擴展方法),而是使用我們視圖的自定義基類。這個基類暴露了我們的幫助器服務(Uri,Html,DataEndpoint)並保持事物可測試性。
我更喜歡在構建表單時使用助手方法。我還喜歡而不是使用Html.TextboxFor(),99%的時間我使用Html.EditorFor()編輯器。
所以,我建一個形式是這樣的:
@Html.LabelFor(model=>model.SomeField)
@Html.EditorFor(model=>model.SomeField)
@Html.ValidationMessageFor(model=>model.SomeField)
這給了我很多: 它可以確保我的所有領域有正確的姓名和身份證的,它允許使用客戶端驗證,無我不得不寫很多額外的標記。
使用Html.EditorFor() - 方法代替Html.TextboxFor(),使我有機會在正確的字段中使用正確的編輯器。 電子郵件字段應使用type =「email」,日期應使用type =「date」。不是類型=「文本」。通過EditorFor(),我可以創建模板,在那裏我將使用TextboxFor()或者純粹的標記。這樣,每個帶有電子郵件字段的模型都會得到相同的編輯器,並且每個日期都會得到相同的日期選擇器。
簡而言之: 如果您不使用EditorForModel(),請始終使用LabelFor(),EditorFor()和ValidationMessageFor()。如果您需要特殊標記,請使用模板。
是的,我指的是@ Html.LabelFor(),@ Html.TextBoxFor()方法 – TiagoBrenck
沒錯。這些助手爲編寫視圖提供了一種簡單的方法,避免編寫複雜且易於遺忘的HTML代碼。 – equisde
是的。開發者循環的成本比CPU循環更多。 –