Frage

Wir können einen MVC-app, dass Anwendungen die Standardordner Konventionen für die HTML-Ansichten, aber wir möchten, dass alternative „Service“ Ordner einzurichten mit Controllern nur für verwendeten Web-Service xml oder json zurück.

So die Route "/ Dienstleistungen / Aufgaben / List" würde zu "/Services/TaskService.cs" geleitet werden, während "/ Aufgaben / List" auf den Standard geführt werden würden „/Controllers/TaskController.cs"

Wir möchten den Service Controller der View-Controller getrennt halten. Wir glauben nicht, Bereiche oder mit einem anderen Projekt arbeiten. Was wäre der beste Weg, um diesen Ansatz?

War es hilfreich?

Lösung

Sie können diese mithilfe von Routing tun, und die Controller in separatem Namensraum zu halten. MapRoute können Sie die Namespace entspricht einer Route angeben.

Beispiel:

Vor diesem Controller

namespace CustomControllerFactory.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
           return new ContentResult("Controllers");
        }
    }
}

namespace CustomControllerFactory.ServiceControllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
           return new ContentResult("ServiceControllers");
        }
    }
}

Und die folgende Routing

 routes.MapRoute(
           "Services",
           "Services/{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new string[] { "CustomControllerFactory.ServiceControllers" } // Namespace
        );


        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new string[] { "CustomControllerFactory.Controllers"} // Namespace
        );

Sie sollten die folgenden Antworten erwarten

/ Services / Home

Servicecontroller

/ Home

Controller

Andere Tipps

Sie wollen eine eigene Controller-Fabrik Umsetzung IControllerFactory erstellen.

Schauen Sie sich http://nayyeri.net/custom-controller- Fabrik-in-asp-net-mvc für ein Beispiel.

Wenn Sie gelbe Ordnernamen sehen Fügen Sie den Namen des Ordners in root

Nachdem haben Sie routes.MapRoute in "App_Start> RouteConfig"

ändern

Ändern Standardroute

routes.MapRoute(
          "Default",
          "{controller}/{action}/{id}",
          new { controller = "Home", action = "Index", id =     UrlParameter.Optional },
          new string[] { "mvcPartialView.HomeController" } // Namespace 
      );

und Fügen Sie diese

routes.MapRoute(
       "ApiControllerOne", // Name of folder
       "ApiControllerOne/{controller}/{action}/{id}",
        new { controller = "ApiFactory", action = "callFactoryOne", id = UrlParameter.Optional },
        new string[] { "mvcPartialView.ApiControllerOne" } // Namespace
    );
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top