0

当我们第一次运行 ASP.NET MVC 应用程序时,我们无法在 URI 中看到默认路由。我的意思是,实际上我们将采取适当的行动,并且视图渲染得很好。但是我在我的 URI 上看不到控制器也看不到操作。

假设我的路线是:

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

Everthing 工作正常,但在我的 URI 中,我只能看到:

http://localhost:25346/

我想看到完整的路径,像这样:

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

2 回答 2

1

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

url/dummycontroller/dummyaction

如果您有一个控制器,它是 caller Dummy,并且它有一个 Action DummyAction,那么这将映射 - 否则失败。如果您只是输入URL,则没有ControllerAction要查找,因此,它使用默认值,在您的情况下为Home/Index.

如果要添加新路由,可以这样做,但请记住将更具体的路由添加before为默认路由。

于 2013-10-25T09:35:20.677 回答
1

你想得太难了,让 MVC 使用它的“魔力”为你完成工作。根据您的评论,您可能想要这样的路线:

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

现在在你的创建一个动作HomeController

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

    return View();      
}

现在使用 url 之类的 url localhost:25346/Home/Index/2013/9/1,您在操作中的参数将被填充。year= 2013, month= 9 和day= 1。您可以将这些值放在ViewBag(见上文)中或创建一个 ViewModel,以便您可以在视图中使用它们。

于 2013-10-25T09:38:28.017 回答