我有 - 我认为 - 一个复杂的URL来处理ASP MVC 1.0: 我在大多数控制器中的所有操作都需要两个参数:Account和Project。这是每个Action的要求之上。这意味着一个典型的URL是这样的:在ASP MVC中处理复杂的URL
http://abcd.com/myaccount/projects/project_id/sites/edit/12
在这个例子中: 我的帐户是帐户名称。 项目可以是控制器,其他选项是位置,雇员。 PROJECT_ID是一个项目的我的帐户,网站内的ID可能是一个控制器,其他选项都像人员或支付。 编辑是一个动作和是编辑的网站的编号。 (希望这已经足够清晰)
现在一个选项是创建一个路径,并通过向所有操作添加两个额外参数将project_id和帐户传递给控制器的所有操作。这并不是真正需要的,我也不确定两个控制器(项目和站点)是否会在这里工作。
我的理想情况是使用某种上下文,它随控制器动作的调用而传递,并在那里存储project_id和myaccount。其余的参数,然后可以以正常的方式处理,如:
// sitescontroller
public ActionResult Edit(string id)
{
string account = somecontext["account"];
string project_id = somecontext["project"];
// do stuff
}
任何有关如何发生这种情况的想法?此外,这将如何与ActionLink一起工作(即基于此上下文生成正确的链接)?
谢谢!
这是查看它的一种方法。这与Basecamp(37Signals)的工作方式完全相同。如果你在Basecamp中创建一个账户,你会得到这样一个url: http://accountName.basecamphq.com/projects/123/notes/345 ZenDesk也完全一样。 (我认为是GetSatisfaction)。我的要求非常相似。 – Khash 2009-05-06 10:38:59