1

我有 - 我认为 - 在 ASP MVC 1.0 中处理的复杂 URL:我在大多数控制器中的所有操作始终需要两个参数:帐户和项目。这是每个行动的要求之上。这意味着一个典型的 URL 是这样的:

http://abcd.com/myaccount/projects/project_id/sites/edit/12

在此示例中: myaccount是帐户名称。projects可以是控制器,其他选项如位置员工project_idmyaccount中项目的 id ,站点可以是控制器,其他选项例如人员付款edit是一个动作,12是编辑的站点的 id。(希望这足够清楚)

现在一个选项是创建一个路由并将 project_id 和 account 传递给控制器​​的所有操作,方法是向所有操作添加两个额外的参数。这并不是真正需要的,而且我不确定两个控制器(项目和站点)是否会在这里工作。

我的理想情况是使用某种上下文来调用控制器操作并将 project_id 和 myaccount 存储在其中。然后可以以正常方式处理其余参数,例如:

// sitescontroller
public ActionResult Edit(string id)
{
string account = somecontext["account"];
string project_id = somecontext["project"];
// do stuff
}

关于如何/在哪里发生这种情况的任何想法?另外这将如何与 ActionLink 一起工作(即基于此上下文生成正确的链接)?

谢谢!

4

2 回答 2

1

您首先需要将令牌添加到您的路线中,例如{company}/projects/{project}{controller}/{action}/{id}. 然后,如果您编写自己的 IControllerFactory ,那么通过构造函数将值从 RouteData 推送到控制器中将非常容易,或者您想要这样做。可能最简单的入门方法是继承 DefaultControllerFactory 并覆盖 CreateController 方法。

于 2009-05-06T10:48:38.217 回答
-1

这对我来说完全没有意义。为什么你会有类似于以下的路线:

{controller}/{id}/{controller}/{id}

?

于 2009-05-06T10:26:27.147 回答