2009-08-19 114 views
0

我有点困惑,当我应该做一个新的控制器,似乎每次我做一个按钮,去某个地方,我需要做一个新的控制器,以获得正确的路径名称。如何命名Asp.net Mvc控制器?

例如在这种情况下我有一个signIn控制器。

该控制器将有

1. Login view 
2. RestPassword view 
3. CreateAccount view 

所以,如果他们点击登录,他们去一些其他的控制器(让我们称之为它的AccountController),所以这会对它的所有客户视图和东西。

现在怎么样RestPassword视图?当它取决于用户密码时,我希望它进入一个页面,显示它是成功的(大多数网站似乎都是这样做的,例如asp.net网站,如果您输入的是电子邮件地址,它会转到另一页并告诉你已经发送了新密码)。

那么现在应该是另一种观点呢?一个控制器?

如果它是一个视图,则该寻路会是什么样子

http://www.site.com/signIn/EmailForgottenPassword 

什么样的看起来怪我。

如果我提出一个新的控制器,然后我可以有

http://www.site.com/EmailForgottenPassword 

什么很多看起来更好,对我,但这控制器将在它一个只有一个视图。

另一个例子是在这个sigIn页面上它们是一个Create Account按钮。现在点击后会转到另一个包含不同帐户列表的页面。

这也应该是一个新的控制器?当帐户在新页面上列出时,它们都链接到注册控制器,其中有很多视图。

所以它会像SignController -> RegistrationController -> RegistrationController.

这可能会得到一些不错的链接。

所以就像我说的那样,看起来好像要获得很好的链接,这是有道理的,你需要不断地在控制器之后制造新的控制器。

所以我必须错过一些东西。

+0

如果您需要保持您的URL清洁,您可以添加一条将路由/ Registration/EmailForgottenPassword简单地路由到/ EmailForgottenPassword的路由 – mxmissile 2009-08-19 22:59:44

回答

2

在你的具体情况下,你一个控制器就足够了。我将其命名为AccountController并向其添加以下操作。

  • 登录
  • 注销
  • 创建
  • CreateConfirmation
  • ResetPassword
  • ResetPasswordConfirmation

然后你想拥有可以使用的Post Redirect Get (PRG) pattern确认屏幕的人。

至于命名。一般而言,您希望使用名词作为控制器,动词使用动作来控制这些控制器。这样你就可以获得很好的可读URL。对于名词,您可以选择控制器处理的逻辑/业务术语(更好的是技术术语)。所以帐户,客户,产品,博文等...

4

事实是,你从来没有真的需要多个控制器。独立的控制器只是分离你的顾虑的方法。换句话说,面向对象的设计范例促使我们将逻辑上的代码划分为模块,但是您不需要拥有 - 任何东西都可以在一个控制器中。

做什么需要的是每个不同类型的要处理请求的独立控制器动作。也就是说,你需要一个暴露给路由表的控制器方法,可以通过输入一些URL和/或提供一些GET或POST数据来调用它。然后这个方法决定显示用户(视图)的内容。

另外,还可以有你想点在Globals.asax修改路由表中任何你想要的控制器或控制器行动的任何 URL。

你可能对我的回答更具体的问题 - 请发布,如果你是以下SOLID原则,那么你应该为它们命名非常具体我会在编辑

0

。如果你使用的是ASP.NET MVC 2,那么我会把主要的小部件放到“区域”中,然后给控制器一个好名字。让你的网址快乐!