记录几个简单的路由配置以防忘记
默认的路由就不说了
1要访问url带有两个参数的路由,例如:home/2/3 注:2和3是参数
routes.MapRoute(
"Default1", // 路由名称
"{controller}/{action}/{id}/{type}", // 带有两个参数的 URL {id}{type}需要和传递的一致
new { controller = "", action = "" ,如果id,和type可以为空 这里配置下 如id=UrlParameter.Optional,type=UrlParameter.Optional},
new { }// 参数默认值
);
控制器 里声明两个参数 需要和定义的路由里一致,int id,string type
配置多层级目录的路由:
控制器下有多级目录:Controllers--Admin--Admin--AdminsContorlls.cs
可见在控制器下又有两层文件夹,
那么在视图层对应的视图应该 就是,,Views--Admin--Admin--Admins--Index.cshtml
那么问题来了 如果直接访问就会报错误,找不到视图之类的.........
解决方法 还是配置路由
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
/*创建自定义路由*/
//多级目录显示视图
routes.MapRoute(
"User", // 路由名称
"文件夹/文件夹/{controller}/{action}/参数/参数", // 带有两个参数的 URL {id}{type}需要和传递的一致
new { controller = "", action = "", 参数= UrlParameter.Optional }
);
设置完路由 在自定义方法
这个是自定义的方法 需要把方法名放到application_Start里启动
protected void RegisterView()
{
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new MyViewEngine());
}
我们的MyViewEngine 方法 是自定义的视图顺序
所有需要继承RazorViewEngine
代码如下:
public MyViewEngine()
{
ViewLocationFormats = new[] {
"~/Views/{1}/{0}.cshtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/文件夹/文件夹/{1}/{0}.cshtml"
};
}
{1}是控制器名,{0}是视图的名称 如index.cshtml