2012-11-13 13 views
0

我使我的視圖模型與改變由EditorForModel生成的HTML佈局,而無需2次

Create.cshtml:

@using (Html.BeginForm("Create","TestTemplate")) {  

    @Html.EditorForModel() 
} 

我不喜歡的輸出內容,因爲所有的div都低於另一。如果我想要一個div將lefthandside浮動到另一個div的水平佈局,該怎麼辦?

當我的Create.cshtml視圖中沒有html時,如何使用EditorForModel()幫助器修改此類佈局更改?

更新:

爲什麼我必須創建兩個視圖。在另一個EditorTemplate-view中,我調用了@ Html.EditorForModel(),我做了所有佈局的東西,我也可以在第一個視圖中通過EditorFor(x => x ....)進行操作。這對我來說似乎很奇怪。

+0

編輯器模板:http://www.google.com/search?q=Razor+Editor+templates –

+0

@Simon我重申了我的問題。 – Elisabeth

+0

EditorTemplates允許您在需要時重新使用相同模型的佈局。它可以節省您一次又一次地爲同一模型編寫'@ Html.EditorFor(x => x ...)','@ Html.TextBoxFor(x => x ...)'。 –

回答

0

您想創建一個EditorTemplate。基本上在~/Views/Shared中創建一個名爲EditorTemplates的新文件夾,然後在該文件夾中創建一個具有模型名稱的新視圖,例如Template.cshtml或其他。

當您撥打@Html.EditorForModel()時,它將使用此視圖作爲模板。

+0

似乎我必須改寫我的問題然後。請參閱更新的問題。 – Elisabeth

0

這個問題相當古老,但對我而言,還有另一種應該提及的方法。雖然MVC不是MVVM,但試圖在這種模式下多思考一下。由於生成的HTML不過是一個頁面的內容,它將像瀏覽器中的視圖模型一樣使用。格式化您的頁面不是HTML的工作。嘗試使用將用於在瀏覽器中呈現視圖的CSS來修改頁面的佈局。

只需使用一個CSS選擇器類似下面改變你的表格,輸入元素,或只是一個特定的input元素的佈局:

form { your CSS here } 
form input { your CSS here } 
form input[name="NameOfInput"] { your CSS here } 

在這些日子裏CSS的力量幾乎是無限的:讓你的項目向左,向右或交替等流動;-)你也不需要創建兩個視圖。