在asp.net MVC中,“主页”(即点击www.foo.com时显示的路线)设置为Home / Index。
我尝试在我的项目中使用Home / Index进行grepping并找不到引用,也无法在IIS(6)中看到任何内容。我查看了root中的default.aspx页面,但这似乎没有做任何相关的事情。
由于
答案 0 :(得分:145)
查看Default.aspx/Default.aspx.cs
和Global.asax.cs
您可以设置默认路线:
routes.MapRoute(
"Default", // Route name
"", // URL with parameters
new { controller = "Home", action = "Index"} // Parameter defaults
);
只需将控制器/操作名称更改为所需的默认值即可。这应该是路由表中的最后一条路径。
答案 1 :(得分:16)
路由是在Configure
类的Startup
方法中配置的。设置"主页"只需添加以下内容。当用户导航到您网站的基本网址时,这将导致用户被路由到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方法,如下所示。这将导致用户被路由到MapRoute方法中定义的控制器和操作,如果他们导航到您站点的基本URL,即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 }
);
}
答案 2 :(得分:4)
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 }
);
}
}
答案 3 :(得分:4)
步骤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 }
);
}
}
答案 4 :(得分:3)
检查global.asax.cs中的RegisterRoutes方法 - 这是路由配置的默认位置......
答案 5 :(得分:2)
在MVC 5之前,您可以通过调用RouteConfig.cs文件中的routes.MapRoute(...)
将URL映射到特定的操作和控制器。这是存储主页的网址的地方(Home/Index
)。但是,如果您修改默认路由,如下所示,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
请记住,这会影响其他操作和控制器的URL。例如,如果您有一个名为ExampleController
的控制器类及其内部的操作方法DoSomething
,则预期的默认URL ExampleController/DoSomething
将不再起作用,因为默认路由已更改。
对此的解决方法是不要弄乱默认路由并在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
操作将映射到网址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();
}
}
答案 6 :(得分:1)
我尝试了答案,但它对我没用。这就是我最终做的事情:
创建一个新的控制器DefaultController。在索引操作中,我写了一行重定向:
return Redirect("~/Default.aspx")
在RouteConfig.cs中,更改controller =&#34;默认&#34;为路线。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }
);
答案 7 :(得分:0)
如果您不想更改路由器,只需转到HomeController 并像这样在索引中更改MyNewViewHere:
public ActionResult Index()
{
return View("MyNewViewHere");
}