我在寻找MVC中使用C#路由上的一些信息。我目前很清楚的MVC路由的基础知识,但我正在寻找的是有点难找。

实际上,我想找到的是定义一个只有一个参数的单一路线的方式。

我网上找到的常见的例子是所有基于周围的示例

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

通过绘制这条路线,你可以映射到任何控制器的任何动作,但如果你想要任何东西传递到行动,方法参数必须命名为“ID”。我想找到解决的办法,如果有可能,这样我就不必不断地只需指定路线在我的行动使用不同的参数名称。

有没有人任何想法,或者找到解决的办法?

有帮助吗?

解决方案

您可以构建路由,只要你喜欢

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

此外,看这个交,它包含在评论部分所有种类的样品的

其他提示

如果你想有一个不同的参数名称的的保持相同的路由变量,使用FromUri属性,像这样:

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

在你的路由,所有你需要的是:

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

我不认为你可以做你问什么。当MVC调用在路线的动作看起来为参数,请求参数和查询字符串。它一直在寻找的参数名称相匹配。

也许好老的查询字符串将满足您的需求。

~/mycontroller/myaction/?foobar=123

将传递123给这个动作:

public ActionResult MyAction(int? foobar)

我知道这是几个世纪以前,但希望它仍然可以帮助别人。我问过同样的问题。我认为这是你在找什么。从我的问题后引述的回答: “在{* PATHINFO}位被称为蛞蝓。它基本上是一个通配符说:‘在这之后一切都塞进一个名为PATHINFO参数’。因此,如果你有‘{资源}个.axd / {* PATHINFO}’和一个网址像这样:http://blah/foo.axd/foo/bar/baz/bing然后两个参数生成,一个叫资源,这将包含foo和一个叫PATHINFO其中含有富/酒吧/巴兹/兵“。

虽然仍不能使用FromUri属性,可以然而使用Route属性,像这样

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

从技术上这增加了一条新的路径,但至少它不会弄乱你的routeconfig。它把通过它的使用,其中所述路由定义权,我喜欢(波动少下来)。

请注意,为了使用属性路由,这必须是在你routeconfig文件的上述您定义的路由:

routes.MapMvcAttributeRoutes();
scroll top