在 C# MVC 中设置默认路由
Setting default route in C# MVC
我正在使用 C# MVC 创建一个项目并使用操作。由于需要,我现在使用Route来隐藏控制器名称,只显示页面名称。
路由配置
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Law",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Law", action = "Home", id = UrlParameter.Optional }
);
控制器 1(访问它:http://localhost:17920/dashboard)和(http://localhost:17920/alert)
public class LawController : Controller
{
[Route("dashboard")]
[ActionName("Home")]
public ActionResult Home()
{
return View();
}
[Route("alert")]
[ActionName("alert-list")]
public ActionResult AlertList()
{
return View();
}
控制器 2(访问:http://localhost:17920/list)
public class ListController : Controller
{
[Route("list")]
[ActionName("list-of-return")]
public ActionResult listOfReturn()
{
return View();
}
我正在尝试的是当我默认输入此 http://localhost:17920 URL 时,默认情况下应显示 http://localhost:17920/dashboard。
谢谢
您需要在 Controller
上定义 RoutePrefix
,如下所示。同时将您的 Route("dashboard")
更新为 Route("Home")
,因为这是您在路由配置中的默认操作名称。
[RoutePrefix("Law")]
public class LawController : Controller
{
[Route("Home")]
[ActionName("Home")]
public ActionResult Home()
{
return View();
}
// Other action methods
}
详情请参考https://devblogs.microsoft.com/aspnet/attribute-routing-in-asp-net-mvc-5/。
编辑 根据你问题中的编辑,你想要的更清楚。从您现有的代码中,您只需要在 LawController
的 Home
操作上再添加一个 Route
,如下所示,这样它就可以匹配 http://localhost:17920/
和 http://localhost:17920/dashboard
action
方法。
public class LawController : Controller
{
[Route("")]
[Route("dashboard")]
[ActionName("Home")]
public ActionResult Home()
{
return View();
}
[Route("alert")]
[ActionName("alert-list")]
public ActionResult AlertList()
{
return View();
}
我正在使用 C# MVC 创建一个项目并使用操作。由于需要,我现在使用Route来隐藏控制器名称,只显示页面名称。
路由配置
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Law",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Law", action = "Home", id = UrlParameter.Optional }
);
控制器 1(访问它:http://localhost:17920/dashboard)和(http://localhost:17920/alert)
public class LawController : Controller
{
[Route("dashboard")]
[ActionName("Home")]
public ActionResult Home()
{
return View();
}
[Route("alert")]
[ActionName("alert-list")]
public ActionResult AlertList()
{
return View();
}
控制器 2(访问:http://localhost:17920/list)
public class ListController : Controller
{
[Route("list")]
[ActionName("list-of-return")]
public ActionResult listOfReturn()
{
return View();
}
我正在尝试的是当我默认输入此 http://localhost:17920 URL 时,默认情况下应显示 http://localhost:17920/dashboard。 谢谢
您需要在 Controller
上定义 RoutePrefix
,如下所示。同时将您的 Route("dashboard")
更新为 Route("Home")
,因为这是您在路由配置中的默认操作名称。
[RoutePrefix("Law")]
public class LawController : Controller
{
[Route("Home")]
[ActionName("Home")]
public ActionResult Home()
{
return View();
}
// Other action methods
}
详情请参考https://devblogs.microsoft.com/aspnet/attribute-routing-in-asp-net-mvc-5/。
编辑 根据你问题中的编辑,你想要的更清楚。从您现有的代码中,您只需要在 LawController
的 Home
操作上再添加一个 Route
,如下所示,这样它就可以匹配 http://localhost:17920/
和 http://localhost:17920/dashboard
action
方法。
public class LawController : Controller
{
[Route("")]
[Route("dashboard")]
[ActionName("Home")]
public ActionResult Home()
{
return View();
}
[Route("alert")]
[ActionName("alert-list")]
public ActionResult AlertList()
{
return View();
}