2014-10-29 57 views
0

这是我的默认路由:怎么办MVC 4路由带参数,默认

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}", 
    defaults: new { controller = "Home", action = "Index" } 
); 

我的控制器是“家”,我的看法是“指数”,它需要这些参数使用默认值:

public class HomeController : Controller 
{ 
    public ActionResult Index(string Queue = "ALL", string Summary = "false") 
    { 
     ... 
    } 
} 

我现在的URL看起来像这样:

http://www.example.com/?Queue=ONE&Summary=true 

,但我想它被路由到这样的事情:

http://www.example.com/ONE?Summary=true 

基本上路由它,所以我不必在URL中使用Queue关键字。

回答

0

修改你的路由定义如下图所示,当我们使用完整的URL

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{Queue}", 
    defaults: new { controller = "Home", action = "Index", Queue = UrlParameter.Optional } 
); 
+0

这将起作用。如果没有在URL中明确指定控制器名称和操作名称(根据OP http://www.example.com/ONE?Summary=true指定),那么它将不起作用,我是否缺少某些内容? – SBirthare 2014-10-29 11:17:44

+0

你是对的。它没有像描述的那样工作,但是我尝试了这种改变 - > url:“{Queue}”(删除{controller}/{action} /),它工作:-) – Espen 2014-10-29 11:25:00