2011-07-15 53 views
5

我目前正在開發一個ASP.NET MVC 3應用程序,其中我有一個特殊的視圖,像嚮導一樣安裝(使用jQuery插件)。每個嚮導步驟都是單個表單的一部分,其中每個「步驟」都被拆分爲它自己的<div>元素。我決定爲每個「步驟」的內容創建部分視圖。我這樣做有幾個原因。一個是它保持每個步驟的代碼整齊有序。另一個原因是它允許我更容易/整齊地在服務器端包含或排除嚮導中的步驟。在多個部分視圖中分割單個表單被認爲是不好的做法嗎?

現在,我的「主」視圖看起來像下面這樣:

@using (Html.BeginForm) 
{ 
    <div class="step" id="step1"> 
     @Html.Partial("Step1") 
    </div> 

    <div class="step" id="step2"> 
     @Html.Partial("Step2") 
    </div> 
} 

我想知道如果做這樣的事情會被認爲是不好的做法,如果我應該整合所有「步驟的代碼「在一個單一的觀點?

回答

2

不,這種方法沒有任何內在的錯誤。

性能開銷很小,但可能沒有任何影響。

如果它使您更容易開發和維護,請放心。

編輯:如果您擔心映射子模型(如我們在註釋中提到的那樣),請考慮在分部視圖中使用ViewData.ModelMetadata.PropertyName來派生輸入控件的ID。

+0

謝謝史蒂夫。我一直在回顧的一個問題是如何處理視圖模型。我通常喜歡每個視圖/局部視圖都有一個視圖模型。如果我爲每個部分視圖創建視圖模型,然後將它們作爲參數傳遞給'Html.Partial',那麼當表單被髮送回服務器/控制器時,我是否可能會遇到綁定問題? –

+0

這種方法在某些情況下也可能有所幫助。如果您的部分Step2是以某種方式設計的,則可以重新使用。例如,也許Step2可以用於創建/插入頁面,也可以用作更新/編輯功能的頁面。 –

+0

只要輸入字段的ID與父模型相關,就不會。但是如果你不打算重新使用其他模型的局部視圖,那麼除了主模型之外沒有必要通過任何其他模型。 –

相關問題