代码之家  ›  专栏  ›  技术社区  ›  Dan Atkinson

将url转换为路由

  •  2
  • Dan Atkinson  · 技术社区  · 16 年前

    这是因为我需要做一些事情,比如为某些URL添加会话cookie,然后将它们传递给相关的操作。

    实现这一点的最佳方式是什么?

    4 回复  |  直到 16 年前
        1
  •  2
  •   Todd Smith Brandon    16 年前

    您可以尝试在运行时更改母版页。但这并不是最好的解决方案。

    Theming Support

        2
  •  0
  •   Community c0D3l0g1c    7 年前

    如果我理解这个问题。。。

    redirect-to-controller-but-with-a-different-master-using-a-catchall-wildcard )您要从以下位置获取通配符:

    routes.MapRoute(
        "Partner",
        "partners/{partner}/{*wildcard}",
        new { controller = "Partners", action = "PartnerRedirect" }
    );
    

    我不知道最好的方法是什么,但看看单元测试url路由的方法,我发现:

    http://weblogs.asp.net/stephenwalther/archive/2008/07/02/asp-net-mvc-tip-13-unit-test-your-custom-routes.aspx

    我不确定它是否完全合适(即,可能不需要模拟东西),但看起来所有数据都是从GetRouteData返回的,并传递给RedirectToAction方法。

        3
  •  0
  •   anonymous    16 年前

    mysite.com/partners/pepsi/products/cola.htm

    但请提供:

    mysite.com/products/cola.htm

    我家里没有MVC,但是你不能用不同的方式定义你的路线吗?

    routes.MapRoute(
        "Partner",
        "partners/{partner}/{*wildcard}",
        new { controller = "Partners", action = "PartnerRedirect" }
    );
    

    做:

    routes.MapRoute(
        "Partner",
        "partners/{partner}/{controller}/{action}/{other stuff you need}",
        new { /* whatever defaults you want */ }
    );
    

    该操作现在有了partner变量来执行任何操作,您可以向partner添加路由约束,以便只有有效的约束匹配。

    下面是一篇关于剥猫皮的很多方法的文章:

    http://weblogs.asp.net/stephenwalther/archive/2008/08/12/asp-net-mvc-tip-31-passing-data-to-master-pages-and-user-controls.aspx

        4
  •  0
  •   Dan Atkinson    16 年前

    不,它实际上是一个重定向,但用户看不到重定向(与服务器的方式大致相同)。Transfer()是在Web表单中完成的。

    我曾想过为这些合作伙伴提供单独的路由处理程序,但母版页的选择已进入平衡。

    我想我必须创建一个ViewExtension来克服这些问题。。。