c# - 修改路线以减少困惑

标签 c# asp.net-mvc

我正在开发一个管理面板,简而言之,它为许多类/模型(例如用户)提供 CRUD 功能。我现在实现这个的方式非常简单;使用脚手架模板生成 Controller 和 View ,然后将它们全部组合到顶级 Admin 目录下。

应用程序扩展了很多,管理 Controller 现在包含了其他 5 个 Controller 的内容。管理 View 文件夹有 20 多个 View 。此外,管理页面的路径看起来很糟糕!

/Admin/UserCreate
/Admin/GroupCreate
...

我想我可以使用路由来解决这个问题。我的想法是,可以将每个 Controller 分开,但仍然反射(reflect)为管理页面的一部分:

/Admin/User/Create
/Admin/Group/Create

这将使路径更易于阅读,并使该应用程序的目录结构更容易接受。

1) 是否可以利用自定义路由从本质上制作“子 Controller ”?有没有更好的办法?我以前从未使用过路线。

2) 在某些时候,我计划通过该 Controller 上的过滤器将管理 Controller 锁定在用户之外。如果我按上述方式更改路由,我的安全过滤器是否仍能正常工作?我是否需要对每个“子” Controller 应用相同的过滤器?

最佳答案

这可以使用 MVC Areas 实现.

使用上面的示例,您只需创建一个单独的管理区域并将该 Controller /操作结构放入其中,同时仍然保持没有 Admin 前缀的默认区域。 :)

至于您的其他问题,您可以使用 Authorize 属性来处理安全性,或者实现您自己的(派生自 ActionFilterAttribute)并装饰您的secure 方法。

关于c# - 修改路线以减少困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14513041/

相关文章:

asp.net-mvc - ASP.NET MVC中的自定义错误处理

c# - 我无法在 Controller 中接收 ActionLink 参数?

c# - 在 using block 内部,需要处理和重新实例化

c# - 没有什么等于 String.Empty,null 不等于 String.Empty,我在这里缺少什么?

javascript - 如何获取 ID 集合以及从 View 表传递到 Controller 的选定下拉列表值?

asp.net-mvc - 为什么我的 ASP MVC View 无法第二次构建

C# MVC : Trailing equal sign in URL doesn't hit route

c# - 获取 ObservableCollection 的父级

c# - 删除最后一行数据绑定(bind) DataGridView C#

c# - 如何在没有数据库的情况下生成仅用于显示用户在 c# 表单应用程序中填写的表单数据的 Crystal 报表