与" - "的网址分隔符MVC路由

时间:2017-05-03 06:35:27

标签: asp.net-mvc routes

我遇到了MVC路由问题。 我使用过这样的路线:

  [Route("{selected}/{category}/{id}/{engineId}")]
  public ActionResult SubCategories(string selected, int id, string category, string engineId)
    {...}

,网址如下:http://localhost:50564/Audi-60-1.5/Suspensie/76/43423

但是现在,我需要用" - "来界定url参数。我能这样做吗?我对MVC路线没有太多经验,我也不知道如何做到这一点。 如果我改变路线是这样的:

[Route("{selected}-{category}-{id}-{engineId}")]
public ActionResult SubCategories(string selected, int id, string category, string engineId)
{...}

我遇到了各种麻烦,例如整个应用程序中的Session变为null,并且我得到了null引用异常。使用" /"分隔符我没有这个问题,一切正常。   enter image description here

1 个答案:

答案 0 :(得分:0)

这是一个基本答案,仅包括控制器和操作,但已经过测试并可以工作。从测试中也不能包含-对于可选参数,最多可以使用。您还必须在启动应用程序时考虑是否正确读取了默认路由

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}-{action=Index}");
        });

以下是使用-作为可选参数时的错误消息

RoutePatternException: In the segment '{controller=Redaction}-{action=Index}-{id?}', the optional parameter 'id' is preceded by an invalid segment '-'. Only a period (.) can precede an optional parameter.

这是示例网址

https://localhost:44365/Home-Index.DocumentId=1