【问题标题】:ASP.NET MVC: Use existing Account or create new User controller?ASP.NET MVC:使用现有帐户还是创建新的用户控制器?
【发布时间】:2009-03-25 17:28:29
【问题描述】:

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

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

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

您认为帐户控制器是针对与用户帐户相关的管理操作还是针对用户帐户的所有操作?您会在创建新控制器的范围内区分成员/角色相关视图/数据和应用程序相关视图/数据吗?

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

【问题讨论】:

  • tvanfosson 一个 MVC 问题?!哇。如果我是你,我会等待 tvanfosson 回答,因为他通常会先回答 MVC 问题;)

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


【解决方案1】:

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

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

所以我认为这更多的是用户如何看待功能的问题。我认为遵循 URI 指示控制器的约定是个好主意(如果您愿意,反之亦然)。

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

另一方面,用户可能会将帐户功能和管理功能视为同一系列操作的一部分,但某些用户具有附加功能。如果是这样,那么这表明它应该在 URI 中的同一路径上,因此是同一控制器的一部分。

总而言之,我认为您应该向您的用户代表而不是本网站的其他人提出这个问题。 :)

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

【讨论】:

  • 我想我所追求的是人们是否认为帐户控制器用于管理操作或与帐户相关的所有操作。在我的场景中,我想以索引视图的形式向该人显示他们最近注册的事件的当前筹款状态。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 2018-08-27
    相关资源
    最近更新 更多