【发布时间】:2016-02-17 06:32:25
【问题描述】:
基本上我有一个问题, 我想在多个控制器中进行一项默认操作,并在我的自定义 url 中使用多个可选参数,如下所示:
www.mydomain.com/{控制器名称}/{v1}/{v2}/{v3}/{v4}
并且也不希望 url 中的操作名称。我在 routeconfig.cs 中有这个路由
routes.MapRoute(
name: "Blog",
url: "{controller}/{v1}/{v2}/{v3}/{v4}",
defaults: new
{
controller = "Blog",
action = "searchBlog",
v1 = UrlParameter.Optional,
v2 = UrlParameter.Optional,
v3 = UrlParameter.Optional,
v4 = UrlParameter.Optional
});
routes.MapRoute(
name: "Forum",
url: "{controller}/{v1}/{v2}/{v3}/{v4}",
defaults: new
{
controller = "Forum",
action = "searchForum",
v1 = UrlParameter.Optional,
v2 = UrlParameter.Optional,
v3 = UrlParameter.Optional,
v4 = UrlParameter.Optional
});
BlogController中的操作
public ActionResult searchBlog(string v1=null,string v2 = null, string v3 = null, string v4 = null)
{
// use optional parameters here
return View("Index");
}
ForumController 中的操作
public ActionResult searchForum(string v1=null,string v2 = null, string v3 = null, string v4 = null)
{
// use optional parameters here
return View("Index");
}
我的动作用 0、3 和 4 个参数命中,但传递 1 或 2 个参数时不能命中。
例如
www.mydomain.com/{控制器名称}/{v1}/{v2}
www.mydomain.com/{控制器名称}/{v1}
请帮助我/指导我,正如我提到的我的要求,在 MVC 中使用路由的正确方法是什么。感谢您宝贵的时间。提前致谢。
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-routing