2010-09-17 67 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等

在这种情况下,你绝对应该有两个控制器