Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Umbraco类MVC路由_Asp.net Mvc_Umbraco7 - Fatal编程技术网

Asp.net mvc Umbraco类MVC路由

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

我目前有一个控制器,需要处理传递给umbraco操作的参数。我所做的是为我的
文档类型添加一个控制器

public class MyDocumentTypeController : RenderMvcController
{
    public ActionResult SignUp(RenderModel model, [Bind(Prefix="rc")] string myArgument = null)
    {
        // some logic
        return View(model);
    }
}
现在我可以把参数传递给那个动作了。假设我的
MyDocumentType
内容在address
http://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在这种情况下,以下链接可以帮助您创建自己的处理程序实现: