尝试使用路由设置根主页
Trying to setup root homepage using routing
我正在尝试使用路由模块将我的域 http://www.example.com/ 的根路径设置为 PersonSearch
控制器,但它似乎没有任何效果(404 错误)。
URL http://www.example.com/person/search 正确地将我带到了所需的页面。
RouteConfig.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
"Root",
"",
defaults: new { controller = "Person", action = "Search" }
);
}
}
PersonController.cs
public class PesonController : Controller
{
[HttpGet]
[Route("person/search")]
public ActionResult Search()
{
PersonSearchViewModel psvm = new PersonSearchViewModel();
return View(psvm);
}
}
我认为它在您的路线中缺少 url 参数
routes.MapRoute(
"Root",
url: "{controller}/{action}",
defaults: new { controller = "Person", action = "Search" }
);
这是一个排序问题。如果您将 URL 定义为空字符串(根),则该路由应放置在 之前 所有其他路由。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Root",
"",
defaults: new { controller = "Person", action = "Search" }
);
routes.MapMvcAttributeRoutes();
// Place any other `MapRoute` declarations here
}
}
我发现我可以通过一段简单的属性路由代码实现我想要的。
public class PesonController : Controller
{
[HttpGet]
[Route("~/")]
[Route("person/search")]
public ActionResult Search()
{
PersonSearchViewModel psvm = new PersonSearchViewModel();
return View(psvm);
}
}
然后我可以删除 RouteConfig
中对 routes.MapRoute()
的调用
我正在尝试使用路由模块将我的域 http://www.example.com/ 的根路径设置为 PersonSearch
控制器,但它似乎没有任何效果(404 错误)。
URL http://www.example.com/person/search 正确地将我带到了所需的页面。
RouteConfig.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
"Root",
"",
defaults: new { controller = "Person", action = "Search" }
);
}
}
PersonController.cs
public class PesonController : Controller
{
[HttpGet]
[Route("person/search")]
public ActionResult Search()
{
PersonSearchViewModel psvm = new PersonSearchViewModel();
return View(psvm);
}
}
我认为它在您的路线中缺少 url 参数
routes.MapRoute(
"Root",
url: "{controller}/{action}",
defaults: new { controller = "Person", action = "Search" }
);
这是一个排序问题。如果您将 URL 定义为空字符串(根),则该路由应放置在 之前 所有其他路由。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Root",
"",
defaults: new { controller = "Person", action = "Search" }
);
routes.MapMvcAttributeRoutes();
// Place any other `MapRoute` declarations here
}
}
我发现我可以通过一段简单的属性路由代码实现我想要的。
public class PesonController : Controller
{
[HttpGet]
[Route("~/")]
[Route("person/search")]
public ActionResult Search()
{
PersonSearchViewModel psvm = new PersonSearchViewModel();
return View(psvm);
}
}
然后我可以删除 RouteConfig
routes.MapRoute()
的调用