关于路由
一般新建一个web项目,都会自动创建一个路由文件
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
默认/Home/Index就是首页
如果要更改首页,只需要更改控制器名称和方法名称就可以了。
如果控制器多一点,路径略微复杂一点,可以这样设置
config.Routes.MapHttpRoute(
name: "V2ApiWithAction",
routeTemplate: "api/v2/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional, @namespace = "Cloud.QuestionManage.Api.Web.Controllers.V2" }
namespace指出映射的命名空间,routeTemplate指出路径
这都是按照默认的路由方式:控制器/方法名?参数的方式找到指定方法的。
如果想改变url的形式,可以使用特性路由,来自定义路由。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();//特性路由,通过特性的方式重新定义路由
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
例如:
[Route("~/sjxq/{isCloud:int}/{paperId:long}")]
public async Task<ActionResult> PaperDetail(int isCloud, long paperId)
{
}
这个方法的请求地址就会变成:根目录+'/sjxq/0/123'
使用Url.Action("Home","PaperDetail",new {isCloud=0,paperId=123}),解析,也会解析成上面的地址,而不是/Home/PaperDetail?iscloud=0&paperId=123
浙公网安备 33010602011771号