我想使用区域,所以我设置了以下内容:
public class ContentAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Content";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Content_default",
"Content/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
我希望将输入以下网址的人定向到我的“内容”区域内的控制器。
www.stackoverflow.com/Content/0B020D/test-data
我希望有人输入任何带有“/ Content /”的网址,然后输入六个字符:
- Page action in a controller named ItemController
- Six characters passed as the parameter id
- Optional text after that (test-data in this case) to be put into parameter title
我该怎么做?在使用区域时,我不太熟悉设置路线。
要放入名为ID
的变量的六位数字答案 0 :(得分:2)
所以你正在寻找像
这样的东西public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Content_default",
"Content/{id}/{optional}",
new { controller = "ItemController", action = "TheActionYouWantThisToAllRouteTo" }
}
这会将所有内容默认为一个控制器和操作方法(您必须在实例中指定)。然后,您可以获得如下数据:
public ActionResult TheActionYouWantThisToAllRouteTo (string id, string optional)
{
// Do what you need to do
}
路由的设置方式,您可以通过将其包装在一对{ }
花括号中,将所需的信息命名为URL。如果您想将optional
的名称改为isTestData
,那么您只需将路线更改为"Content/{id}/{isTestData}"
。
注意:由于您没有指定要将其路由到的默认操作方法,因此我将其替换为TheActionYouWantThisToAllRouteTo
。更改该字符串以读取您想要的所有操作方法。这也意味着您不能拥有名为ContentController的“常规”控制器。
修改强>
Stephen Walther有一篇关于自定义路线限制的博客文章。 It can be found here。这应该是完成你所需要的一个良好的开端。