2016-06-08 9 views

Antwort

0

frage ich URL in MVC erinnert sich nicht hängen von Ordnerstruktur, sondern an Controller und Routing. (Attribut Routing)

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

. Bitte überprüfen Sie diesen Link. ASP.NET MVC Routing Overview (C#). Ich denke, du kannst dort mehr Erklärungen finden. Zum einem Link können Sie Attribut

[Route("orders/{id:int}/{orderCode?}")] 
    public async Task<ActionResult> Order(int id, string orderCode = "") 
    { 
    //// 
    } 
0

Ist es möglich, einen Ordner aus der URL in ASP.NET MVC zu entfernen verwenden?

Nr

MVC verwendet keine Dateien und Ordner ihre Endpunkte Host - es nutzt Controller und Aktionen. Daher ist es nicht möglich, einen "Ordner" aus der URL zu entfernen, da sich in der URL keine Ordner befinden.

MVC verwendet jedoch .NET-Routing, mit dem Sie Ihre URLs so konfigurieren können, wie Sie möchten. Um also eine Route zu erstellen, die wie in Ihrem Beispiel /page entspricht, müssen Sie eine Route einfügen, um diese URL Ihrer RouteConfig.cs-Datei zuzuordnen.

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     // Route to domain.com/page that calls an action named Page on the HomeController 
     routes.MapRoute(
      name: "PageRoute", 
      url: "page", 
      defaults: new { controller = "Home", action = "Page" } 
     ); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
} 
+0

Entschuldigung, ich hätte meine Frage klarer machen sollen, dass/mvc/der Ordner ist, der die MVC-Anwendung enthält. Kann RouteConfig.cs den/mvc/URL-Teil sehen und routen? Ich nahm an, dass URLs nur innerhalb von/mvc/... routen können, wenn das sinnvoll ist. – Organic

+0

Die einfachste Lösung ist, den Ordner zu entfernen und die Anwendung im Stammverzeichnis der Website zu hosten oder [verschieben Sie das Stammverzeichnis der Website über IIS] (https://forums.iis.net/t/1207046.aspx). Wenn die Umstände es erfordern, müssen Sie das Unterverzeichnis behalten. Sie können das [IIS URL Rewrite Module] (http://www.iis.net/downloads/microsoft/url-rewrite) verwenden, um [das Stammverzeichnis in das Unterverzeichnis zu schreiben] (http://forums.asp.net/t/1479881.aspx?URL+Der + Stammordner + in einen Unterordner schreiben. Dies ist kein Problem, das Sie versuchen sollten, innerhalb der Anwendung zu lösen, da es vollständig außerhalb existiert. – NightOwl888

+0

Der Stamm der Website ist eine Webforms-Website. Als Beweis des Konzepts habe ich bereits versucht, die mvc-Anwendung in den Stamm der Website zu verschieben, indem ich die web.config-Datei kopiere, die mvc-DLL in den Root-Bin-Ordner kopiere und den Views-Ordner in den Stammordner kopiere. Ich habe einen Fehler 404 beim Versuch, eine mvc-URL zu laden. – Organic