0

「1つのプロジェクト内の領域」と呼ばれるASP.NETMVC2プレビュー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にマウントできる場合(たとえば、いずれかの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 に答える