2010-09-17 89 views
0

將控制器映射到視圖的最佳實踐是什麼?例如,說對於url mysite.com/login和mysite.com/register...我可以有我的LoginController和一個RegisterController映射到Login/Index.aspx和Register/Index.aspx視圖。或者,我的HomeController可以處理這兩種情況,並將它們映射到Home/Login.aspx和Home/Register.aspx。將MVC控制器映射到視圖的最佳實踐?

比另一個「更好」嗎?

+2

這取決於你,但IMO登錄/註冊足夠相似,可以歸入「AccountController」下,就像MS爲你創建一個新的MVC項目一樣。 – 2010-09-17 16:37:27

+0

因此,如果我想將默認mysite.com/account/login更改爲mysite.com/login,那麼我需要更改global.asax中的規則? – Prabhu 2010-09-17 16:40:51

+1

是的,你將不得不改變你的路線。 – klabranche 2010-09-17 16:47:44

回答

0

登錄和註冊看起來像可以放在同一個控制器中的相關操作。帳戶控制器也許?

更好的是,我相信維護一個處理類似或相關操作的控制器比控制多個控制器更容易。我不確定哪一個更被接受爲「正確」的方式。也許只是個人喜好?

0

在這種特殊情況下,我會建議兩個不同的控制器和路由作爲登錄和註冊單獨的關注。

您的網址還具有更好的可讀性。 IE - mysite.com/login/和mysite.com/register/

0

我上週也經歷了這個困境。我最終在一個主控制器下放置了諸如登錄,註冊和購物車之類的PUBLIC視圖,以及在帳戶控制器下的私人視圖,例如我的個人資料,願望清單,訂單歷史記錄,地址簿等。

爲什麼僅在處理公共頁面的每個人都可以看到的相同控制器中混合用於已認證用戶的視圖?

這是我的邏輯。

0

它是一個選擇的問題。有些人反對在控制器中有很多代碼。他們要求你儘可能保持簡約。添加新的控制器不會以任何方式影響您的應用程序。如果您有多個操作或者有新的控制器不會影響性能。 下面是我所遵循的:如果你對每個頁面有不同的操作(比如在你的情況下登錄和註冊頁面),然後把它們放在一個單獨的控制器中,在這裏它們被分組在一起。 說的登錄您有下列行爲verifyInput,forgotPassword,登錄,incorrectLogin等 和寄存器verifyInput,regenerateCaptcha,的createAccount時,sendmail等

在這種情況下,你絕對應該有兩個控制器