2013-06-19 42 views
0

我有免費贈送的服務! 我現在已經達到了我有足夠的客戶,我想爲他們提供一個「高級」版本。ASP.Net MVC - 付費設計視圖版本

所以,一些「高級」功能將包括在視圖上一些額外的文本框中。 我已經構建了一些自定義屬性來處理控制器上的安全性,但最佳處理視圖的方式是什麼? 我應該創建另一個視圖並提供免費的高級視圖嗎? 我應該只有一個視圖嗎? (如果是的話我將如何手柄只顯示某些文本框\區)

建議和樣品的歡迎。

回答

0

如果您的視圖包含更多的控制比你的模式是不同的,因此你的控制器也是不同的。您的付費版本可能會以與免費版本不同的速度發展,因此我建議您將代碼分開。

0

這似乎最好是按照每個視圖來完成。如果免費視圖與高級視圖大多數情況下是相同的,那麼我會建議在主視圖中使用部分視圖,檢查用於更改顯示的成員狀態。

如果UI和功能視圖有重大區別,那麼您可以在控制器內完全交換不同的視圖。

2

一個辦法是讓你的主URL的很簡單,簡單地讓它們呈現基於用戶的會員級別孩子的行動。

使用HTML.Action()就可以完全呈現​​了不同的看法,而只是有你的看法是這樣的:

@model mymodel 

@User.IsInRole("Premium") ? 
    Html.Action("PremiumView", "MyController") : 
    Html.Action("NormalView", "MyController") 

如果你有參數,你可以通過他們。

此外,還要確保您標記那些輔助作用作爲兒童操作,使用[ChildActionOnly]所以他們不能單獨訪問。

這樣你就可以保持你的免費和高級版本完全分開,但保持相同的URL。

您也可以使用路由約束根據各種因素(如成員資格級別)路由到不同的控制器操作。

1

您可以創建一個自定義視圖引擎,在適用時提供優質內容,然後根據(例如MyView.cshtml & MyView.Premium.cshtml)命名您的視圖。這使您可以靈活地使用高級內容擴展視圖,同時也不會承諾預先進行重大更改。您還需要驗證何時以及何時不接受操作中的「高級」更改,但是當您處理時,這應該是簡單的角色檢查。