Asp.net 为什么默认控制器和操作不是';在URI处不可见?

Asp.net 为什么默认控制器和操作不是';在URI处不可见?,asp.net,asp.net-mvc,asp.net-mvc-4,routes,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Routes,当我们第一次运行ASP.NET MVC应用程序时,在URI上看不到默认路由。我的意思是,实际上我们正在进行适当的操作,并且视图被渲染得很好。但是我在我的URI、控制器和操作上都看不到 假设我的路线是: routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home",

当我们第一次运行ASP.NET MVC应用程序时,在URI上看不到默认路由。我的意思是,实际上我们正在进行适当的操作,并且视图被渲染得很好。但是我在我的URI、控制器和操作上都看不到

假设我的路线是:

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", 
            action = "Index", id = UrlParameter.Optional });
一切都很好,但在我的URI中,我只能看到:

http://localhost:25346/
我希望看到完整的路径,如下所示:

http://localhost:25346/Home/Index/

当站点加载时,它会查看url,并尝试使用路由引擎匹配传入的url

url/dummycontroller/dummyaction
如果您有一个调用者
Dummy
的控制器,并且该控制器有一个动作
DummyAction
,则该动作将映射,否则将失败。如果只输入
URL
,则没有要查找的
Controller
Action
,因此,它使用默认值,在您的情况下是
Home/Index


如果你想添加一条新的路线,你可以这样做,但是记住在默认路线之前添加更具体的路线。

你觉得太难了,让MVC发挥它的“魔力”,为你做这项工作。根据您的评论,您可能需要这样的路线:

routes.MapRoute(
    name: "IndexWithDate",
    url: "Home/Index/{year}/{month}/{day}",
    defaults: new { controller = "Home", action = "Index" });
现在在
家庭控制器中创建一个动作:

public ActionResult Index(int year, int month, int day)
{
    ViewBag.Year = year;
    ViewBag.Month = month;
    ViewBag.Day = day;

    return View();      
}

现在,使用类似于
localhost:25346/Home/Index/2013/9/1
的url,将填充操作中的参数<代码>年
=2013、
=9和
=1。您可以将这些值放置在
视图包中
(见上文),或者创建一个视图模型,以便在视图中使用它们。

这就是默认路线的全部点。如果这样的东西不存在,当您导航到
http://localhost:25346/
?在我的默认路由中,我有一些值,如:并且我希望能够在视图中使用类似于:ViewContext.RequestContext.RouteData.values[“Year”]的内容获取这些值