2013-07-17 33 views
0

Virtuall我寫的每個ASP應用程序(數百個)遵循完全相同的模式。具有頁眉和頁腳的「單頁應用程序」,以及根據網址中/內容發生變化的動態更新內容區域。像下面(非常簡化的,但表明了原理):我可以在ASP.NET MVC中複製這種經典的ASP模式嗎?

[% select case lcase(request("action") %] 
[% case "home" %] 
    [div class='class_home'...] 
     Home Screen HTML/Script/ASP 
    [/div] 
[% case "enroll" %] 
    [div class='class_enroll'...] 
     Enroll Screen HTML/Script/ASP 
    [/div] 
[% case "checkout" %] 
    [div class='class_checkout'...] 
     [!-- if it's gonna be lengthy, will often do this instead: --] 
     [!-- 
      #include file=CHECKOUT.inc.asp 
     --] 
    [/div] 
[% end select %] 

該圖案甚至可以被嵌套幾層深用另外的請求(「子動作」)分區/子表單參與。每個表單都提交給自己([form action =「」method = POST「)),頂部的asp腳本獲取表單並處理它,然後繼續。

所以,問題是,這種模式仍然在MVC內完成?或者是否必須在我創建的每個單獨頁面中一遍又一遍地複製公共區域?

這是一個好主意,想要做到這一點?還是有更好的方法來實現「單頁面應用程序」的相同目標?

謝謝!

編輯:下面是一個例子。它已經過時了幾年,但它展示了我正在談論的設計模式。我可以在MVC中做些複雜的事情嗎?

http://www.pdqauction.com

如果你想登錄,使用拍賣碼「華萊士」和「客戶」既名和密碼。你可以看到我在切換到MVC時所面臨的問題。這些並不簡單,web應用程序。有時候它變得相當複雜。我需要知道我是否能夠像ASP一樣輕鬆地在MVC中完成此操作。

+0

這不是術語單頁應用程序的含義。這被稱爲意大利麪代碼並被認爲是反模式。 –

回答

0

這在MVC中依然如此。如果您使用剃鬚刀,請在/Views/Shared中查找_Layout.cshtml文件。如果您使用的是舊的ASP.Net引擎,它將位於同一位置,但被稱爲MasterPage

此外,還有一個文件叫做_ViewStart.cshtml。這由框架自動調用,這是指向_Layout.cshtml文件的內容。

0

我會再多加一點使用_ViewStart.cshtml_Layout.cshtml的建議。確保爲所有視圖使用強類型視圖,並讓每個視圖模型從包含所有「常見」數據(如菜單狀態,登錄狀態等)的基本視圖模型類擴展而來。

您會使用無限制來執行此操作:

public class MyBaseViewModel 
{ 
    public string UserName { get; set; } 
    //other properties 
} 

public class MySampleViewModel : MyBaseViewModel 
{ 
    //additional properties for this View only 
} 
相關問題