Asp.net mvc Umbraco类MVC路由
我目前有一个控制器,需要处理传递给umbraco操作的参数。我所做的是为我的Asp.net mvc Umbraco类MVC路由,asp.net-mvc,umbraco7,Asp.net Mvc,Umbraco7,我目前有一个控制器,需要处理传递给umbraco操作的参数。我所做的是为我的文档类型添加一个控制器: public class MyDocumentTypeController : RenderMvcController { public ActionResult SignUp(RenderModel model, [Bind(Prefix="rc")] string myArgument = null) { // some logic retur
文档类型添加一个控制器
:
public class MyDocumentTypeController : RenderMvcController
{
public ActionResult SignUp(RenderModel model, [Bind(Prefix="rc")] string myArgument = null)
{
// some logic
return View(model);
}
}
现在我可以把参数传递给那个动作了。假设我的MyDocumentType
内容在addresshttp://mypage/mydocumenttype
,因此我可以像这样将参数传递给我的操作:http://mypage/mydocumenttype/signup?rc=1234ef
。我不喜欢的是:
- 我不能限制这个论点
- 我不能使用类似MVC的路径,比如:
http://mypage/mydocumenttype/signup/1234ef
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapUmbracoRoute(
"MyDocumentType",
"MyDocumentType/{action}/{myArgument}",
new { controller = "MyDocumentType", action = "Index", myArgument = UrlParameter.Optional },
/* WHAT GOES HERE? */,
new { myArgument = @"^[a-zA-Z0-9]{5}$" });
}
然而,如果我创建简单的旧vanila MVC路由,我就会失去我需要的翁布拉科上下文。如果我使用
MapUmbracoRoute
我不知道应该传递什么IRoutHandler
。有什么想法吗?您是否考虑过使用新的umbracovirtualnodebyidrotehandler(1234))?缺点是,这将重定向到特定页面,在本例中是id为1234的节点,但如果需要更多控制,您可以创建自己的路由处理程序。是的,我有。在这种情况下,对于每个请求,我都需要找到合适的节点(总是相同的),但它很糟糕:/n在这种情况下,以下链接可以帮助您创建自己的处理程序实现: