2016-10-22 139 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。 如果你在另一個區域的默認頁面,那麼你必須指定區域也。

謝謝。