MVC路由 - 参数名称问题
-
19-08-2019 - |
题
我在寻找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();