默认归因路由不起作用
Default attributing routing not working
我正在做一个新项目,我决定单独使用属性路由。这是我的 RouteConfig 文件:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
//routes.MapRoute(
// name: "Default",
// url: "{controller}/{action}",
// defaults: new { controller = "HomeController", action = "Index", id = UrlParameter.Optional }
//);
}
这是我的控制器:
[RoutePrefix("home")]
public class HomeController : Controller
{
[Route]
[Route("~/")]
public ActionResult Index()
{
var status = HttpContext.User.Identity.IsAuthenticated;
ViewBag.Title = "Home Page";
return View();
}
[Route("test")]
public ActionResult Test()
{
return View();
}
}
我意识到通常我的所有属性都在工作,但我希望 Index 方法在应用程序启动时 运行。说 https://example.com and then the Index method is fired as if i entered the url https://example.com/home/index. I get a blank space when i do say https://example.com。
任何人都可以帮助我理解为什么我得到一个空白 space 以及如何使用属性路由设置默认应用程序启动路由?我已经在互联网上冲浪了几个小时,但我什么也摸不着。
在您的情况下,您仍应设置默认路由。这样网站就知道从哪里开始。从那里开始,其他一切都应该按您的预期工作。
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{action}",
defaults: new { controller = "Home", action = "Index" }
);
}
这是我的家庭控制器。
public class HomeController : FrontOfficeControllerBase {
public HomeController() {
}
public ActionResult Index() {
...
return View();
}
}
除此之外,这让我的路由配置保持干净,因为我在其他任何地方都使用属性路由。
试试这个:
[RoutePrefix("home")]
public class HomeController : Controller
{
[Route("index")]
[Route("~/", Name = "default")]
public ActionResult Index()
{
...
}
...
}
我正在做一个新项目,我决定单独使用属性路由。这是我的 RouteConfig 文件:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
//routes.MapRoute(
// name: "Default",
// url: "{controller}/{action}",
// defaults: new { controller = "HomeController", action = "Index", id = UrlParameter.Optional }
//);
}
这是我的控制器:
[RoutePrefix("home")]
public class HomeController : Controller
{
[Route]
[Route("~/")]
public ActionResult Index()
{
var status = HttpContext.User.Identity.IsAuthenticated;
ViewBag.Title = "Home Page";
return View();
}
[Route("test")]
public ActionResult Test()
{
return View();
}
}
我意识到通常我的所有属性都在工作,但我希望 Index 方法在应用程序启动时 运行。说 https://example.com and then the Index method is fired as if i entered the url https://example.com/home/index. I get a blank space when i do say https://example.com。
任何人都可以帮助我理解为什么我得到一个空白 space 以及如何使用属性路由设置默认应用程序启动路由?我已经在互联网上冲浪了几个小时,但我什么也摸不着。
在您的情况下,您仍应设置默认路由。这样网站就知道从哪里开始。从那里开始,其他一切都应该按您的预期工作。
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{action}",
defaults: new { controller = "Home", action = "Index" }
);
}
这是我的家庭控制器。
public class HomeController : FrontOfficeControllerBase {
public HomeController() {
}
public ActionResult Index() {
...
return View();
}
}
除此之外,这让我的路由配置保持干净,因为我在其他任何地方都使用属性路由。
试试这个:
[RoutePrefix("home")]
public class HomeController : Controller
{
[Route("index")]
[Route("~/", Name = "default")]
public ActionResult Index()
{
...
}
...
}