代码之家  ›  专栏  ›  技术社区  ›  Jimmeh

MVC路由-参数名称问题

  •  10
  • Jimmeh  · 技术社区  · 16 年前

    实际上,我想找到一种方法来定义一条只接受一个参数的路线。

    routes.MapRoute(
        "Default",
        "{controller}.mvc/{action}/{id}"
        new { controller = "Default", action="Index", id=""});
    

    通过映射此路由,可以映射到任何控制器中的任何操作,但如果要将任何内容传递到该操作中,则必须将方法参数称为“id”。如果可能的话,我想找到一种方法来解决这个问题,这样我就不必为了在操作中使用不同的参数名而不断地指定路由。

    有没有人有什么想法,或者找到了解决这个问题的方法?

    5 回复  |  直到 16 年前
        1
  •  7
  •   Curtis    12 年前

    public ActionResult MyView([FromUri(Name = "id")] string parameterThatMapsToId)
    {
       // do stuff
    }
    

    在您的路线中,您只需要:

    routes.MapRoute(
      "Default",
      "{controller}.mvc/{action}/{id}"
      new { controller = "Default", action="Index", id=""});
    
        2
  •  5
  •   Tim Scott    16 年前

    ~/mycontroller/myaction/?foobar=123
    

    public ActionResult MyAction(int? foobar)
    
        3
  •  3
  •   Tom    12 年前

    我知道这已经是几百年前的事了,但希望它仍然能帮助一些人。我以前也问过同样的问题。我想这就是你要找的。引用我的问题帖子的答案: {*pathInfo}位被称为slug。它基本上是一个通配符,表示“此点之后的所有内容都填充到名为pathInfo的参数中”。因此,如果您有“{resource}.axd/{*pathInfo}”和如下url: http://blah/foo.axd/foo/bar/baz/bing 然后创建两个参数,一个称为resource,其中包含foo,另一个称为pathInfo,其中包含foo/bar/baz/bing。”

        4
  •  0
  •   Eduardo Molteni    16 年前

    您可以根据需要构造路线

    routes.MapRoute(
        "Default",
        "{controller}.mvc/{action}/{param1}/{param2}/{param3}"
        new { controller = "Default", action="Index", param1="", param2="", param3=""});
    

    而且 look at this post

        5
  •  0
  •   toddmo    8 年前

    FromUri Route

    [Route("~/Policy/PriorAddressDelete/{sequence}")]
    public ActionResult PriorAddressDelete(int sequence)
    {
      Policy.RemoveScheduledPriorAddressItem(sequence);
      return RedirectToAction("Information", new { id = Policy.Id });
    }
    

    从技术上讲,这增加了一条新的路线,但至少它不会扰乱你的生活 routeconfig

    在上面 您定义的路线:

    routes.MapMvcAttributeRoutes();