【问题标题】:ASP.NET MVC Routing - Keeping up with parameters through redirectsASP.NET MVC 路由 - 通过重定向跟上参数
【发布时间】:2011-09-30 18:18:26
【问题描述】:

我正在处理我的第一个真正的 ASP.NET MVC 项目,我需要一些建议。

假设我的应用有一个管理部分,您可以在其中创建公司、部门和每个部门内的用户。

公司 -> 部门 -> 用户

现在我的网址是这样的:

Companies/Index
Departments/Index?companyId=1
Users/Index?companyId=1&departmentId=2

这变得越来越复杂,因为如果我必须从用户列表重定向回部门列表,我必须执行以下操作:

return RedirectToAction("Index", "Departments", new { companyId = model.CompanyId });

随着事情变得越来越嵌套,我必须开始传递越来越多的参数,以便控制器操作具有所需的上下文。

有没有更好的方法来为具有这种“嵌套”功能的控制器构建路由?他们应该看起来更像: 公司/{id}/部门/{id}/用户?

有没有人可以链接到我的好文章,可以提供一些关于最佳实践的建议?

【问题讨论】:

    标签: asp.net-mvc coding-style routing


    【解决方案1】:

    您只需要在 Global.aspx 上添加更多路由,将 Urls 映射到操作 顶部有更具体的路线。 你可以有类似的东西:

    routes.MapRoute("user","Users/Index/{companyId}{departmentId}", new {controller="",action=""}) routes.MapRoute("department","Departments/Index/{companyId}",new { controller="",action=""}) routes.MapRoute("company","Companies/Index",new { controller="",action=""})

    【讨论】:

    • 感谢您的回复。我知道我可以像这样手动设置路由,但我仍然必须将多个路由参数传递给新控制器。例如,我为位于“companies/4/departments/16/users/26/photos/new”的用户上传了一张照片,在该操作中我需要重定向回照片列表,这让我通过companyId、departmentId 和 userId 手动添加到新路由。这似乎是很多手动编码,有很大的错误空间。我基本上要问的是,就是这样,还是有更好的模式可以遵循?谢谢!
    • @jdraper3 - 你优雅地解决了这个问题吗?我目前面临同样的情况,在互联网上找不到太多帮助。任何有关您的决议的提示将不胜感激。谢谢
    • 嘿,我不再做很多直接的 MVC,现在主要使用 angular,但实际上并没有像我当时正在寻找的神奇解决方案。将值存储在模型中并将它们传递给 RedirectToAction 方法就可以了,我肯定是想多了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多