Answers:
看看Default.aspx/Default.aspx.cs
和Global.asax.cs
您可以设置默认路由:
routes.MapRoute(
"Default", // Route name
"", // URL with parameters
new { controller = "Home", action = "Index"} // Parameter defaults
);
只需将Controller / Action名称更改为所需的默认值即可。那应该是路由表中的最后一条路由。
url: "{controller}/{action}/{id}"
。只需给路由指定不同的名称即可。
路由是在该类的Configure
方法中配置的Startup
。要设置“主页”,只需添加以下内容。当用户导航到您网站的基本URL时,这将导致用户被路由到MapRoute方法中定义的控制器和操作,即,yoursite.com将用户路由到yoursite.com/foo/index:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=FooController}/{action=Index}/{id?}");
});
如下所示,使用位于App_Start / RouteConfig.cs(MVC 3和4)或Global.asax.cs(MVC 1和2)中的RegisterRoutes方法。如果用户导航到站点的基本URL,这将导致用户被路由到MapRoute方法中定义的控制器和操作,即,yoursite.com会将用户路由到yoursite.com/foo/index:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Here I have created a custom "Default" route that will route users to the "YourAction" method within the "FooController" controller.
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "FooController", action = "Index", id = UrlParameter.Optional }
);
}
步骤1:在解决方案中单击Global.asax文件。
步骤2:然后前往[定义]
RouteConfig.RegisterRoutes(RouteTable.Routes);
步骤3:更改控制器名称和视图名称
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home",
action = "Index",
id = UrlParameter.Optional }
);
}
}
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Your Controller", action = "Your Action", id = UrlParameter.Optional }
);
}
}
检查global.asax.cs中的RegisterRoutes方法-这是路由配置的默认位置...
在MVC 5之前,您可以通过调用routes.MapRoute(...)
RouteConfig.cs文件将URL映射到特定的动作和控制器。这是主页网址的存储位置(Home/Index
)。但是,如果您如下所示修改默认路由,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
请记住,这将影响其他操作和控制器的URL。例如,如果您有一个名为的控制器类,并且其中有一个名为ExampleController
的操作方法DoSomething
,则ExampleController/DoSomething
由于更改了默认路由,因此预期的默认url 将不再起作用。
一种解决方法是不要弄乱默认路由,并在RouteConfig.cs文件中为其他操作和控制器创建新路由,例如:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Example",
url: "hey/now",
defaults: new { controller = "Example", action = "DoSomething", id = UrlParameter.Optional }
);
现在,该类的DoSomething
操作ExampleController
将映射到url hey/now
。但是,每次要为不同动作定义路线时,这样做都会很繁琐。因此,在MVC 5中,您现在可以添加属性以将url匹配到类似这样的操作,
public class HomeController : Controller
{
// url is now 'index/' instead of 'home/index'
[Route("index")]
public ActionResult Index()
{
return View();
}
// url is now 'create/new' instead of 'home/create'
[Route("create/new")]
public ActionResult Create()
{
return View();
}
}
我尝试了答案,但对我没有用。这就是我最终要做的事情:
创建一个新的控制器DefaultController。在索引操作中,我写了一行重定向:
return Redirect("~/Default.aspx")
在RouteConfig.cs中,更改路由的controller =“ Default”。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }
);