创建一个MVC网站后,我们可以在/app_strat/routeConfig.cs中来查看集中控制路的方法,RegisterRoutes方法(注册路由),我们改一下,删除默认的RegisterRoutes中的所有内容,然后来
自定义:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapMvcAttributeRoutes(); //自定义路由
}
}
然后在Controller注册一个规则
[Route("Test")]
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
然后启动项目,输入Test就会出现About的视图
[Route("")]
public ActionResult Index()
{
return View();
}
默认页可以这样写,注册的规则也可以重叠,既一个控制器(Controller)可以注册多条路由规则
[Route("")]
[Route("home")]
[Route("home/index")]
public ActionResult Index()
{
return View();
}
路由值可以这样写
[Route("Test/{id}")]
public ActionResult About(int id)
{
ViewBag.Message = "Your application description page.";
return View();
}
控制器路由:
前面看到了如何把路由的特性添加到操作方法,很多时侯,控制器中的方法遵循的模式基本上一样,我们可以用一个通用方法,来节省一下代码量和时间。
我们这样改一下HomeController
[Route("home/{action}")]
public class HomeController : Controller
{
//[Route("")]
//[Route("home")]
//[Route("home/index")]
public ActionResult Index()
{
return View();
}
public ActionResult About(int id)
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
}
当然这种方法还支持为个别控制提供单独的路由规则
[Route("")]
[Route("home")]
[Route("home/index")]
public ActionResult Index()
{
return View();
}
写得有点凌乱,改天有时间修改