0

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

当 url 指向没有 id 的 url 时,一切正常:

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

当url包含参数时出现问题:

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" />

任何人都可以提出解决坏资源href问题的解决方案吗?

4

2 回答 2

1

当您使用 URL 路由时,您事先不知道 URL 中有多少/多少/路径/部分。所以你根本不能使用相对路径的 URL:你不知道你需要多少个 '..' 段。

相反,使用有根 URL:

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

如果您的应用程序可以安装在非根 URL 上(例如,在您area的其中一个下,您必须将该区域名称作为根 URL 的一部分输出。(大概是使用AreaRegistrationContext.AreaName.)

于 2009-10-05T15:51:33.173 回答
0

这个怎么样,设置 runat="server" 属性。

<head runat="server">
  <link href="~/Content/datatables.css" rel="stylesheet" type="text/css" runat="server" />
  ...
于 2009-10-06T14:30:19.820 回答