区域中的aspx文件中的href路径

时间:2009-10-05 15:33:27

标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-routing asp.net-mvc-areas

我正在不断测试ASP.NET MVC 2 Preview 2的新功能:“一个项目中的区域”。 目前我在aspx代码中链接到css和js文件时遇到问题。

当网址指向没有ID的网址时,一切正常:

  

http://mysite.com/area/controller/action

当网址包含参数:

时,会出现问题
  

http://mysite.com/admin/controller/action/id

然后页面无法从/ content和/ scripts找到css和js文件。

我认为问题与路由有关。我有标准的路由规则集,例如:

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        AreaRegistration.RegisterAllAreas();

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

并在该地区的路线配置中:

        public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "admin_default",
            "Admin/{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = "" }
            );
    }

aspx文件中的示例资源href:

    <link href="../../Content/datatables.css" rel="stylesheet" type="text/css" />

有人能提出解决方案来解决资源不良的问题吗?

2 个答案:

答案 0 :(得分:1)

当您使用URL路由时,您不知道您的URL中的/ many / path / parts将如何提前。所以你根本不能使用路径相对的URL:你不知道你需要多少个'..'段。

相反,请使用有根网址:

<link href="/Content/datatables.css" rel="stylesheet" type="text/css" />

如果您的应用程序可以挂载在非根URL上(例如,在您的area之一下),则必须输出该区域名称作为根URL的一部分。(推测这是使用{获得的} {1}}。)

答案 1 :(得分:0)

怎么样,设置runat =“server”属性。

<head runat="server">
  <link href="~/Content/datatables.css" rel="stylesheet" type="text/css" runat="server" />
  ...