我正在开发一个简单的MVC网站。在我的项目中,只有一个控制器(Home
)和2个操作方法(Index
和Inner
页面)。 Home
操作返回主页视图,Inner
页面操作返回内页的内容(内页使用单个模板,因此对所有内页使用单个视图)。
现在我想要的是,如果我运行项目,我得到的菜单如下:
http://localhost:3000/Home/
http://localhost:3000/Home/Info/AboutUs
http://localhost:3000/Home/Info/Contact
但不是上面的路径,我需要路径:
http://localhost:3000/Home/
http://localhost:3000/AboutUs
http://localhost:3000/Contact
不添加新控制器,并且url需要调用相应的操作方法。
我的路由文件是
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
你能帮助我实现这个目标吗?
答案 0 :(得分:3)
您需要为路线表添加自定义路线。但请确保您也保留默认路线。例如,我在名为“HomeRoute”的自定义路线下创建,同时保留默认路线......
routes.MapRoute(
name: "HomeRoute",
url: "{action}",
defaults: new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
但是,请注意,您需要在家庭控制器中定义操作方法,因为默认控制器设置为“Home”,如果它们在不同的控制器中定义,则更改默认控制器
换句话说,如果你的家庭控制器定义如下......
public class HomeController : Controller
{
public ActionResult Index(){...}
public ActionResult About(){...}
}
然后,您可以使用以下路线导航至About
操作...
网站名称/关于