مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

ali-farzin

عضویت از 1393/05/11

Routing در Area و مشکل عدم شناسایی Routeها روی ActionLinkها

  • سه شنبه 2 تیر 1394
  • 22:44
تشکر میکنم

با سلام

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


مثال پیوست

پاسخ های این پرسش

تعداد پاسخ ها : 0 پاسخ
در حال حاضر هیچ پاسخی ارسال نشده است
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)