2011-09-30 67 views
0

我正在处理我的第一个真正的ASP.NET MVC项目,我需要一些建议。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} /用户?

是否有一篇很好的文章,有人可以联系我,可以提供一些最佳实践的建议,当涉及到这一点?

回答

0

你只需要在你的Global.aspx上添加更多路线,它将Urls映射到顶部具有更多特定路线的动作 。 你可以有这样的事情:

routes.MapRoute( “用户”, “用户/索引/ {companyId} {} DepartmentID的”,新{控制器= “”,行动= “”}) routes.MapRoute( “department”,“Departments/Index/{companyId}”,new {controller =“”,action =“”}) routes.MapRoute(“company”,“Companies/Index”,new {controller =“”,action =“”})

+1

感谢您的回复。我知道我可以像这样手动设置路由,但我仍然需要将多个路由参数传递给新控制器。例如,我上传了一张位于“公司/ 4 /部门/ 16 /用户/ 26 /照片/新”的用户的照片,并且在该操作中我需要重新导向到照片列表,这使我通过companyId,departmentId和userId手动添加到新路线。这看起来像很多手动编码,有很大的出错空间。我基本上要问的是,它就是这样,还是有更好的模式可以遵循?谢谢! – jdraper3

+0

@ jdraper3 - 你是否优雅地解决了这个问题?我目前面临着同样的情况,在互联网上找不到很多帮助。任何提示您的决议将不胜感激。谢谢 – Luc

+0

嘿,我不再做很多直MVC了,现在大多使用角度,但是当时并没有真正的魔术解决方案。将值存储在模型中并将它们传递给RedirectToAction方法就好了,我肯定会推翻它。 – jdraper3