我正在开发一个新项目,我决定单独使用属性路由。这是我的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然后触发Index方法就像我输入了网址https://example.com/home/index一样。当我说https://example.com时,我得到一个空白。
任何人都可以帮助我理解为什么我会得到一个空白区域,以及如何使用属性路由设置默认的应用程序启动路径?我一直在网上冲浪几个小时,但我不能把手放在任何东西上。
答案 0 :(得分:2)
在您的情况下,您仍应设置默认路线。这样,网站就知道从哪里开始。从那里开始,其他一切都应该如你所愿。
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();
}
}
除此之外,这使我的路由配置保持干净,因为我在其他地方使用属性路由。
答案 1 :(得分:1)
试试这个:
[RoutePrefix("home")]
public class HomeController : Controller
{
[Route("index")]
[Route("~/", Name = "default")]
public ActionResult Index()
{
...
}
...
}