在Asp.Net MVC中设置“主页”
在asp.net MVC中,“主页”(即打到www.foo.com时显示的path)被设置为Home / Index。
- 这个值在哪里存储?
- 我怎样才能改变“主页”?
- 在主控制器的索引操作中,有没有比使用RedirectToRoute()更优雅的东西?
我尝试在我的项目中寻找Home / Index,并找不到引用,也不能在IIS中看到任何内容(6)。 我查看了根目录下的default.aspx页面,但似乎没有做任何相关的事情。
谢谢
看看Default.aspx/Default.aspx.cs
和Global.asax.cs
您可以设置一个默认路由:
routes.MapRoute( "Default", // Route name "", // URL with parameters new { controller = "Home", action = "Index"} // Parameter defaults );
只需将控制器/操作名称更改为所需的默认值即可。 这应该是路由表中的最后一个路由。
使用位于App_Start / RouteConfig.cs中的RegisterRoutes方法,如下所示。 这将导致用户被路由到新的MapRoute声明中定义的控制器和动作,如果他们导航到您的网站的URL没有URL参数,即www.yoursite.com将路由用户www.yoursite.com/foo /指数:
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 } ); }
ASP.NET核心
路由在Startup
类的Configure
方法中Configure
。 要设置“主页”,只需添加以下内容:
app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=FooController}/{action=Index}/{id?}"); });
检查global.asax.cs中的RegisterRoutes方法 – 这是路由configuration的默认位置…
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 } ); } }
MVC中的属性路由5
在MVC 5之前,您可以通过调用RouteConfig.cs文件中的routes.MapRoute(...)
将URL映射到特定的操作和控制器。 这是存储主页的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文件中为其他操作和控制器创build新路由,
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 } );
现在, ExampleController
类的DoSomething
动作将被映射到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(); } }
第1步:在解决scheme中单击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 } ); } }
我试了答案,但它没有为我工作。 这就是我最终做的事情:
创build一个新的控制器DefaultController。 在索引操作中,我写了一行redirect:
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 } );
- parsing器错误消息:无法加载types'TestMvcApplication.MvcApplication'
- Visual Studio ASP.Net MVC撤消设置为起始页面操作
- entity framework迁移中必填字段的默认值?
- Unity将依赖关系注入到具有参数的MVCfilter类中
- 将我的DateTime转换为UTC有问题
- 使用FormsAuthentication.SetAuthCookie存储更多信息
- 防伪cookie标记和表单字段标记在MVC 4中不匹配
- 为什么要使用@ Url.Content(“〜/ blah-blah-blah”)?
- ASP.NET MVC 3 Razor性能