2016-10-22 132 views
0

我想要将MVC应用程序的默认页面mydomain.com/Views/Home/Index.chtml更改为指向应用程序根目录mydomain.com/Default.aspx中的另一个默认页面。使用MVC更改默认页面

这是MVC Default MapRoute的默认配置。如何将配置更改为指向mydomain.com/Default.aspx?我是MVC的新手,我想了解RegisterRoutes函数的工作原理。

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 } 
     ); 
    } 
} 
+1

MVC不会导航到文件 - 它将导航到控制器中的操作方法。什么是返回该视图的控制器和方法。 –

+0

是Default.aspx一个WebForms页面? –

+0

是Default.aspx是一个WebForm页面。 – Gloria

回答

1

URL Rooting in ASP.NET (Web Forms) - chsakell's Blog,默认MVC路由前补充一点:

routes.MapPageRoute("default", "", "~/Default.aspx"); 

使用过滤器,您也可能做到这一点,但它可能是最简单的只是做一个重定向中的Index行动HomeController

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return Redirect("~/Default.aspx"); 
    } 
} 
+0

我已经在索引页面中使用了重定向,但我认为有一种“更干净”的方式来做到这一点。 – Gloria

+0

问题的一部分是,默认的ASP.NET MVC模板按照惯例假定对根URL的请求是针对HomeController的,它是索引操作。默认为WebForms页面在混合项目中并不完全“正常”(无论如何,在我公认的有限的经验中)。 PageRoute可能是重定向的最简单替代方案。 @StephenMuecke可能会有更好的建议。 –

+0

我已经尝试了HomeController中的返回重定向,它迄今为止工作良好....我会尝试在此处描述的其他选项。 – Gloria

0

嗯,我觉得更清洁,做正确的方法是你的aspx页面迁移到CSHTML视图和默认路由添加到您的route.config

否则一个解决方法是从重定向到aspx页面的默认路由。

看一看斯科特的博客here

+0

我无法更改任何名称或扩展名,因为该网站已建立。因此,我想使用我所拥有的并尽力以最好的方式解决问题。 – Gloria

+0

我认为重定向到default.aspx是这种情况下可能的最佳方式。 –

0

你必须设置路由的配置。

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Admin", action = "Index", id = UrlParameter.Optional } 
     ).DataTokens.Add("area", "AdminMaster"); 

这里AdminMaster是Area,Conttroller Name是Admin和Action Name是Index。 如果你在另一个区域的默认页面,那么你必须指定区域也。

谢谢。