2011-10-06 14 views
3

因此,我們正在對默認的優劣討論的結構推理產生的MVC3意見。它包裝這樣的模型領域;什麼是元素和類MVC3生成的視圖

<div class="editor-label"> 
     @Html.LabelFor(model => model.SenderMessage) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.SenderMessage) 
     @Html.ValidationMessageFor(model => model.SenderMessage) 
    </div> 

一個同事說,編輯標籤的div不應該存在。標籤元素具有足夠的語義。他希望看到這樣的:

<p> 
     @Html.LabelFor(model => model.SenderMessage) 
     @Html.EditorFor(model => model.SenderMessage) 
     @Html.ValidationMessageFor(model => model.SenderMessage) 
    </p> 

如果是對我,我可能會朝着這樣的傾斜。 (是的,我知道我可以用T4定製。)

<div class="model-field"> 
    <div class="editor-label"> 
     @Html.LabelFor(model => model.SenderMessage) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.SenderMessage) 
     @Html.ValidationMessageFor(model => model.SenderMessage) 
    </div> 
</div> 

爲什麼第一種方式比第二兩種方式更好?

回答

2

MVC3等框架試圖成爲所有人的一切。結果他們生成的代碼通常最終被過度設計。

這適用於幾乎所有框架,CMS和網站設計器應用程序;如果您查看網上絕大多數網站的生成代碼,您將看到過度結構化的HTML,因爲它是由代碼生成器創建的,而不是手寫的。

在許多情況下,它是可以改變的模板或引擎來生成更乾淨的代碼,但通常有很好的理由,發電機默認創建他們的代碼。

例如,考慮到執行上的標籤和字段一些聰明的jQuery效果的網站。在包裝<div>元素時,一些效果可能會更容易實現。

框架設計師們採取了謹慎的態度,並在結構,因爲這給了最大的靈活性爲其最終用戶(即開發商)以不同的方式與它合作。從純粹主義者的角度來看,更清晰的HTML可能會更好,但額外標記的影響很低,並且增加的靈活性是明顯的勝利。

1

我喜歡

<fieldset> 
    <div class="model-field"> 
     <label /> 
     <input /> 
    </div> 
    <div class="model-field"> 
     <label /> 
     <input /> 
    </div> 
    <div class="model-field"> 
     <label /> 
     <input /> 
    </div> 
</fieldset> 

僅僅因爲一個DIV似乎是最合適的語義的方式來做到這一點。

雖然有些人認爲表單項應該在<ul><dl>列表中列出,但我不確定我是否同意。特別是如果CSS被禁用。

我也沒有對<p>使用太熱衷無論是。

相關問題