3

我在我的web應用程序一堆按鈕風格鏈接:定製MVC HTML中使用的局部視圖控制

<a href="@Url.Action("Index", "Home")" class="btn btn-default btn-lg btn-right"> 
    <span class="glyphicon glyphicon-home"></span> 
    <h3>Store Home</h3> 
</a> 

有時,他們獲得額外的標記來指示方向的箭頭,或其他一些裝飾:

<a href="@Url.Action("Payment", "Checkout")" class="btn btn-primary btn-lg btn-right"> 
    <h3><<</h3> 
    <span class="glyphicon glyphicon-credit-card"></span> 
    <h3>Back to Payment</h3> 
</a> 

我的問題是,而不是尖刻我的標記與此按鈕複製的微妙的不同口味和粘貼,是否適合使用的局部視圖,這樣如何讓一個按鈕,它的各種口味的知識是所有在一個地方?編輯:爲了清楚起見,我的意思是一個局部視圖,除了按鈕標記以外,還有一個潛在的「按鈕視圖模型」對象,其中包含視圖的各種設置。

似乎部分視圖的目的是促進可重用性和可維護性,但我不確定是否我採取了太多的措施,或者如果有某種性能約束我不知道這會使這一個壞主意。

+5

我沒有看到使用局部視圖來保持標記一致並且更容易更改的問題。您也可以使用自定義HTML助手完成此操作。 – Joel

回答

3

我寧願去一個自定義的HTML幫助器,但使用部分來隔離這樣的常見功能也是適當的。

通過自定義幫助你的代碼可能是這樣的:

@Html.MySuperButton("Store Home", "Index", "Home") 

或:

@Html.MySuperButton("Back to Payment", "Payment", "Checkout", "<") 

在所有情況下,如果你有重複的常用功能,倒不如把它封裝成一個可重用的幫手。對於如此小的HTML部分,自定義助手似乎是最合適的解決方案。

+1

自定義幫助器可以在內部只返回字符串Partial()或void RenderPartial()。兩者都是好的,如果部分名稱發生變化,那麼只有1或2個輔助方法更新,而不是cshtml的gobs。 –

+0

個人而言,如果我正在編寫自定義HTML幫助程序(這是我在這種情況下所要做的),我可能不會將其與部分中包含的特定視圖引擎語法捆綁在一起。由於它只是標記的一小部分,我寧願在助手中使用'TagBuilder'來根據輸入參數生成所需的輸出。然後,我可以在任何使用不同視圖引擎的MVC應用程序中重用我的幫助程序,如WebForms,Razor,... –

+0

我們可能會堅持使用Razor,但很好理解! – jtheis

相關問題