Asp.Net MVC4中的路由
本文关键字:路由 MVC4 Net Asp | 更新日期: 2023-09-27 18:26:23
我收到"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页面之一。您无法路由到外部url,如问题中的www.facebook.com
。
所有重定向到外部源的操作都需要通过控制器操作(使用Controller.Redirect
)或ASPX页面或ASHX处理程序中的Response.Redirect
来完成。
路由不会扩展到您自己的站点。使用标准MVC路由设置并进行控制器操作将用户重定向到Facebook是否更好?
public class CatalogController:Controller
{
public ActionResult Annualreport2013()
{
return Redirect("http://www.facebook.com");
}
}
我认为MapPageRoute
仅用于WebForms路由(MSDN文档)。我一直在MVC应用程序中使用MapRoute
扩展。