当我们运行ASP.NET MVC应用程序时,我们第一次看不到URI的默认路由。我的意思是,实际上我们正在采取适当的行动并且视图得到很好的渲染。但是我无法在我的URI中看到控制器和动作。
让我们说我的路线是:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home",
action = "Index", id = UrlParameter.Optional });
Everething工作正常,但在我的URI中,我只能看到:
http://localhost:25346/
我希望看到完整的路径,就像那样:
http://localhost:25346/Home/Index/
答案 0 :(得分:1)
当网站加载时,它会查看网址,并尝试使用路由引擎匹配传入的网址。
url/dummycontroller/dummyaction
如果你有一个调用者Dummy
的控制器,并且它有一个动作DummyAction
,那么这将映射 - 否则失败。如果你只是放入URL
,那么就没有Controller
或Action
来查找,因此,它会使用默认值Home/Index
。
如果您想添加新路线,可以这样做,但请记住添加更具体的路线before
作为默认路线。
答案 1 :(得分: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();
}
现在使用类似localhost:25346/Home/Index/2013/9/1
的网址,您的参数将被填充。 year
= 2013,month
= 9和day
= 1.您可以将这些值放在ViewBag
中(参见上文)或创建一个ViewModel,以便您可以在你的观点。