ASP.NET 4 URL路由Web表单打破了我对样式,脚本,图像等的相对路径

时间:2012-04-24 23:54:05

标签: asp.net asp.net-mvc url-routing asp.net-mvc-routing webforms

我在default.aspx中有一个带有类似链接的应用程序......

<link href="Styles/smoothness/jquery-ui-1.8.14.custom.css" rel="stylesheet" type="text/css" />
<script src="Scripts/json2.min.js" type="text/javascript"></script>
<script src="Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>
<script src="Scripts/jquery-ui-1.8.14.custom.min.js" type="text/javascript"></script>
<script src="Scripts/jquery.tmpl.min.js" type="text/javascript"></script>  

一旦我添加了URL路由,就会破坏我的相对路径。因此,如果我深入到一条路线,那么页面就找不到图像,脚本等。我想我的jQuery服务调用可能也会被破坏。除了在每个相对引用的开头添加“/”以解决此问题之外,还有其他方法吗?在我的global.asax中,我目前有......

void RegisterRoutes(RouteCollection routes)
{

    routes.MapPageRoute(
        "EntityRoute", 
        "{entityID}", 
        "~/Default.aspx");        

    routes.MapPageRoute(
        "GlobalSearchRoute",
        "{entityID}/{guarantorID}/{guarDOB}",
        "~/Default.aspx");
}

我可以在这里添加一些允许我的相对路径在不改变站点中所有路径的情况下运行的东西吗?

2 个答案:

答案 0 :(得分:1)

您可以使用global.asax中的 Routes.IgnoreRoute 来排除引用静态内容的路由:

routes.IgnoreRoute("Styles/{*pathInfo}");
routes.IgnoreRoute("Scripts/{*pathInfo}");
routes.IgnoreRoute("Images/{*pathInfo}");

答案 1 :(得分:1)

您只需使用html基本标记。

在aspx中:

<base id="baseControl" runat="server" />

在背后的代码中:

protected void Page_Init(object sender, EventArgs e)
{
    baseControl.Attributes.Add("href", Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/"));
}

希望这有帮助。