با سلام
(1) در پروژهای Routing پیاده شده و به خوبی کار میکند.
namespace Routing_Example.Controllers { public class HomeController : Controller { [Route("Person/{name}")] public ActionResult ShowPerson(string name) { ViewBag.name = name; return View(); } } }
(2) به این پروژه یک Area با نام AAA اضافه شده و که متد آن به شکل زیر است:
namespace Routing_Example.Areas.AAA.Controllers { [RouteArea("AAA", AreaPrefix = "Ara")] [RoutePrefix("AAH")] public class AAAHomeController : Controller { [Route("AAAHello")] public ActionResult Hello() { ViewBag.Hello = "سلام عرض میشود"; return View(); } } }
(3) روت کانفیگ در ریشه پروژه و همچنین در Area به شکل زیر است:
namespace Routing_Example { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapMvcAttributeRoutes(); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, namespaces: new[] {"Routing_Example.Controllers"} ); } } }
namespace Routing_Example.Areas.AAA { public class AAAAreaRegistration : AreaRegistration { public override string AreaName { get { return "AAA"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "AAA_default", "AAA/{controller}/{action}/{id}", new { area = "AAA", controller = "Home", action = "Index", id = UrlParameter.Optional }, new[] { "Routing_Example.Areas.AAA.Controllers" } ); } } }
بیان سئوال:
Routing رو در area هم پیاده شده است و اگر آدرس Route شده را در Addressbar زده شود، صفحه مورد نظر در Area به درستی باز میشود ولی ActionLinkها (با وجود آنکه نام area را به شکل زیر به آن افزوده شده است) همچنان آدرس اولیه (Route نشده) را برمیگردونند.
برای استفاده از Routing در areaی AAA:
۱ - در بالای کنترلر برای area از ایریبیوت [RouteArea("AAA", AreaPrefix = "Ctrl") استفاده شد.
۲ - برای کنترولر هم از اتریبیوت RoutePerfix استفاده گردید
۳ - برای متدهای داخل کنترلر را همانند بالا، از اتریبیوت Routeاستفاده شد.
۴ - در کلیه لینکها area و نام کنترولر را مانند زیر تعیین کردم.
@Html.ActionLink("Hello", "Hello", "AAAHome", new { area = "AAA", controller = "AAAHome" }, null)
مثال پیوست
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)