Frage

Ich teste kontinuierlich die neue Funktion von ASP.NET MVC 2 Preview 2 genannt: „Bereiche innerhalb eines Projekts“. Zur Zeit habe ich ein Problem mit Verknüpfung zu CSS und JS-Dateien direkt von aspx-Code.

Wenn die URL verweist auf eine URL ohne die id, funktioniert alles einwandfrei:

  

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

Das Problem erscheint, wenn die URL die Parameter enthält:

  

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

dann kann die Seite nicht css und js finden Sie Dateien von / Inhalt und / scripts.

Ich denke, das Problem zu Routing verwandt ist. Ich habe Standard-Routing-Regeln festgelegt, zum Beispiel:

        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
        );

und in der Route config Bereich:

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

Ein Beispiel Ressource href in aspx-Datei:

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

vorschlagen kann jemand eine Lösung, die das Problem der schlechten Ressource href zu lösen?

War es hilfreich?

Lösung

Wenn Sie URL-Routing verwenden, können Sie nicht wissen, wie / many / path / Teile es in der URL im voraus sein werden. So dass Sie nicht Weg relative URLs überhaupt nutzen können. Sie wissen nicht, wie viele ‚..‘ Segmente, die Sie gehen zu müssen,

Verwenden Sie stattdessen wurzelt URLs:

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

Wenn Ihre Anwendung auf einer Nicht-Root-URL montiert werden (z. B. unter einem Ihres area s, müssen Sie Ausgabe, die Bereichsnamen als Teil der URL verwurzelt. (Vermutlich erhält AreaRegistrationContext.AreaName verwenden.)

Andere Tipps

Wie wäre es damit, Set runat = "server" -Attribut.

<head runat="server">
  <link href="~/Content/datatables.css" rel="stylesheet" type="text/css" runat="server" />
  ...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top