簡體   English   中英

路由在Asp.Net MVC4

[英]Routing in Asp.Net MVC4

我收到"VirtualPath must be a non-empty string starting with ~/." 錯誤

說明:執行當前Web請求期間發生未處理的異常。 請查看堆棧跟蹤,以獲取有關錯誤及其在代碼中起源的更多信息。

異常詳細信息:System.ArgumentException:VirtualPath必須是一個以〜/開頭的非空字符串。 參數名稱:virtualPath

在下面的代碼中:

public class RouteTableHelper
    {
        public static RouteCollection UserSiteRoutes()
        {
            RouteCollection routes = new RouteCollection();
            RegisterRoutes(routes);
            return routes;
        }
        public static void RegisterRoutes(RouteCollection routes)
        {
              ...............
            routes.MapPageRoute("catalogAnnualreport2013", "catalog/annualreport2013", "www.facebook.com");
            .............
        }
   }

根據MSDN ,第三個參數應該是一個虛擬URL(包括應用程序根~ )。 因此,該參數的名稱為physicalFile

就像是:

routes.MapPageRoute( "catalogAnnualreport2013" // routeName
                   , "catalog/annualreport2013" // routeUrl
                   , "~/yourPage.aspx" // physicalFile
                   );

其中yourPage.aspx是您自己的ASP.NET ASPX頁面之一。 您不能在問題中使用外部網址,例如www.facebook.com

所有重定向到外部源的操作都需要通過Controller動作(使用Controller.Redirect )或ASPX頁面或ASHX處理程序中的Response.Redirect來完成。

路由不會超出您自己的站點。 使用標准的MVC路由設置並執行將用戶重定向到Facebook的控制器操作可能會更好嗎?

public class CatalogController:Controller
{
    public ActionResult Annualreport2013()
    {
        return Redirect("http://www.facebook.com");
    }
}

我相信MapPageRoute僅用於WebForms路由( MSDN docs )。 我一直在MVC應用程序中使用MapRoute擴展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM