2009-04-08 53 views
28

我明白在ASP.NET MVC中使用HTML助手並將其擴展爲提供自己的原因,但我想知道使用HTML助手是否是一個好主意。ASP MVC HTML助手 - 好還是壞?

我認爲ASP.NET MVC的好處之一就是控制HTML。如果你開始將它隱藏在生成HTML的助手函數中,你不會開始失去可見性嗎?我想這是不是這樣的問題,當你生成簡單的控件,如按鈕,但我已經看到使用HTML助手來創建網格和更復雜的HTML輸出。

現在我也明白這樣做的理由是保持乾爽,避免重複。但是在這裏沒有類似於代碼的危險嗎?另外,如果您正在與設計師合作,該怎麼辦?通常,設計師將創建標記並應用樣式。如果你開始用產生標記的助手注入視圖,這難道不會使這種協作變得困難嗎?

+0

不需要。只要幫手沒有違反MVC的關注點,那就是他們正在做的不是表現邏輯,那麼他們沒有任何問題。是的,一些複雜的助手實際上可能會違背顧慮的分離,但這與助手本身是好還是不好有所不同。 – 2013-05-19 07:16:59

回答

14

「控制HTML」是微軟營銷發言,他們是如何選擇品牌的平臺。 ASP.net MVC的重點在於它更簡單,更適合於webapps,然後是整個有狀態事件驅動的webforms模型,以及微軟空間之外幾乎所有人都轉移到數年前的東西。儘管微軟不能這麼說,因爲他們對webforms有巨大的投資,而且這是他們企業故事的關鍵部分。

這就是說,如果你有助手的業務邏輯,你使用它們是錯誤的。它基本上只是在多個頁面中重複使用的表示邏輯的代碼,目標是儘可能簡化標記中的scriptlet標記。

只要你按照他們應該使用的方式使用助手,設計師應該學會如何使用它們應該是相當微不足道的。請記住,目標是保持簡單,如果它們最終使事情變得更加複雜,就意味着它們沒有被正確使用。

9

很好的評論,馬特。仍然存在一個問題:在「純粹的」MVC實現中,HTML助手是否是一個好主意。我認爲這就是「純」的魔術詞。每當我放慢思考「正確」做事的方式時,我真的在試着看看一種特定的方法是否符合純粹主義的願景。那麼,純粹主義者會使用HTML助手嗎?

我約8/10純粹主義,我不會使用它們。我見過這個觀點超越了技術,並且在PHP和Zend框架中引發了MVC的問題。它只是感覺不對,對我來說,這是人們可以想到的最好的措施。

+1

MVC模式中沒有什麼說你不能使用幫助函數來生成模板標記代碼。 MVC只談論關注的分離。只要你的幫助函數沒有違反關注的邊界,那麼MVC就沒有什麼可說的了。從嚴格模式的角度來看,這樣的「純粹」MVC沒有涉及到,因爲沒有任何內容涉及MVC的任何方面。這些助手純粹是視圖的特徵(MVC中的V)。 – 2013-05-19 07:12:49

3

傭工絕對沒有錯。他們習慣於保持你的觀點清晰和聲明。有一種說法就像「如果在你的觀點中有」如果「陳述,你做錯了」。它們被用在許多着名的MVC框架中,比如Ruby On Rails和Cake PHP。退房this post。 「純粹主義」與否,助手是一件好事,不要被混淆與不良練習或抽象漏洞。

1

我認爲其他人沒有提到的重要一點是您的意見的可移植性。

您可以立即將您的HTML,JavaScript和CSS移動到其他平臺上的應用程序。您不必將所有醜陋的HTMLHiders轉換。對不起,HTMLHelpers ..轉換爲實際的HTML。

儘管我非常重視.NET框架,它減少了我的開發時間,使我的工作變得簡單,但我強烈認爲視圖應該是非專有的。

無論如何,您可以從模型和控制器的框架中獲得幾乎所有的好處。在您的表示層注入框架的依賴關係完全沒有價值,IMO。