ASP.NET MVC:使用现有帐户还是创建新的用户控制器?

时间:2009-03-25 17:28:30

标签: asp.net-mvc model-view-controller

我正在创建一个新的ASP.NET MVC应用程序。到目前为止,我已经使用帐户控制器执行与用户帐户相关的操作 - 登录/注销,激活(如注册,但我使用注册进行网站中的其他操作,因此我已将其重命名),添加/更新联系信息。但到目前为止,我一直专注于管理用户视图。

我正处于开始创建非管理用户将看到的各种视图的位置。与管理界面相比,这些相当有限。我倾向于在用户“系列”中创建一组新的视图和相关的控制器,而不是使用帐户视图/控制器。这是一个好主意还是我应该坚持使用帐户控制器?我的感觉是,由于这是普通用户,因此它应该是一个单独的控制器,因为Account适用于普通用户和管理用户。

编辑:在阅读前几个回复后,我的重构问题是:

您认为帐户控制器是针对与用户帐户相关的管理操作还是用户帐户上的所有操作?您是否可以区分成员资格/角色相关的视图/数据和与应用程序相关的视图/数据到创建新控制器的程度。

相关,但没有直接回答我的问题:ASP.NET MVC Account Controller usage guidelines?

2 个答案:

答案 0 :(得分:1)

我不认为这里有正确或错误的答案,所以我会给你我的意见。

从技术上讲,任何解决方案(扩展帐户控制器或创建新控制器)都可以正常工作。

所以我认为这更像是用户如何看待功能的问题。我认为遵循URI规定控制器的惯例是个好主意(反之亦然,如果你愿意的话)。

例如,如果您希望在单独的路径上执行“管理”操作,那么它应该是一个单独的控制器。您可能希望这样做,例如,如果您使用IIS模块进行身份验证,或者它使您的日志分析更容易。

另一方面,可能是用户将帐户功能和管理功能视为同一系列操作的一部分,除了某些用户具有其他功能。如果是这样,则表明应该在URI中的相同路径上,因此,它应该是同一个控制器的一部分。

总结一下,我认为这是一个问题,你应该问你的用户代表而不是本网站上的人。 :)

更新:关于您更新的问题,我想说在帐户控制器上更改用户密码的操作是相当自然的,并且该操作可以由用户自己调用,不只是管理员。所以我不认为帐户控制器严格用于管理任务。另一方面,你的筹款表现的例子远远超出了与会员相关的范围,所以也不清楚它是否属于账户。我仍然倾向于“问你的用户代表。”

答案 1 :(得分:0)

在ASP.NET MVC中,您通常会根据数据类型而不是访问类型创建控件。例如:

代替2 /Controllers/UsersControl.cs和/Controllers/Admin/UsersControls.cs,对于管理员和普通用户都更容易使用一个通用控制器 - /Controllers/UsersController.cs(通过设置不同的[Authorize]属性)和意见)。

我会保留现有的AccountController.cs来封装与帐户相关的功能。只需为其余的用户相关功能添加新的UsersController.cs(可能有像OnlineUsers等方法。)