PDA

View Full Version : آموزش: آموزش پلاگین نویسی برای asp mvc



itsurge
یک شنبه 07 تیر 1394, 00:07 صبح
قسمت اول
با سلام
تا حالا شده خیلی از دوستان این مسله براشون پیش بیاد که دوست داشته باشند سایتی طراحی کنند مثلا سایت هایی که با وردپرس یا جوملا طراحی می شود که خصوصیت پلاگین یا همون ماژول نویسی رو برای گسترش سایت داشته باشد یا اصلا دوست داشته باشند برای خودشون مدیریت محتوای درست کند با خصوصیت های یاد شده، خوب بریم سراغ اصل مطلب

برای انجام این کار چندین روش وجود داره که با هم بررسی می کنیم

1- استفاده از Areas در asp mvc(ساده ترین کار):
سناریو: ساخت یک سایت با تعداد ماژول فراوان مثلا یک سایت با ماژول های بازار یابی و صورت حساب

خوب باهم شروع می کنیم به ساخت چنین سایتی

در ابتدای کار ما یک سایت پایه درست می کنیم
132665

خوب حالا در پروژه جدید ساخته شده وارد پوشه View سپس Sherad شده و فایل _Layout.cshtml را باز کزده
و به لینک های موجود در صفحه چند لینک زیر را اضافه می نماییم



<li>@Html.ActionLink("بازار یابی", "Index", "Marketing", new { Area = "Marketing" }, null) </li>
<li>@Html.ActionLink("صورت حساب", "Index", "Billing", new { Area = "Billing" }, null)</li>


132666

خوب حالا به پروژه خودمون یک areas به نام Marketing اضافه می کینم
سپس پوشه Marketing موجود در areas رو حذف می کنید و می گذارید پوشه خوده areas باقی بماند

افزودن ماژول
مرحله بعدی افزودن ماژول به برنامه است برای انجام این کار ما به Solution برنامه یک پروژه دیگه از نوع Empty به نام Marketing اضافه می کنیم که این همان ماژول ما می باشد مکان ذخیره سازی پروزه جدید باید درآدرس shop/areas باشد
سپس پوشه های زیر را از پروزه جدید ساخته شده حذف نمایید



App_Data
App_Start
Content folder
پوشه sheard داخل پوشه views
global.asax file

Solution برنامه شما تا اینجای کار
132668

در ادامه سراغ پروژه اصلی خود رفته و فایل RouteConfig.cs را باز نموده و یک namespace به آن اضافه می کنیم

public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new string[] { "Shop.Controllers" }
);
}
}

خوب حالا به سراغ پروژه جدید رفته و به آن یک کلاس به نام MarketingAreaRegistration با کد های زیر اضافه نموده

public class MarketingAreaRegistration : AreaRegistration {
public override string AreaName
{
get
{
return "Marketing";
}
}


public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Marketing",
"Marketing/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new string[] { "Marketing.Controllers" }
);
}
}

حال بر روی پروژه جدید راست کلیک کرده گزینه properties را انتخاب کرده و در تب سمت چپ Build در قسمت OutPut
مقدار زیر را جایگزین نمایید
..\..\bin\
132669
دوباره به پروژه جدید ساخته شده بر می گردیم و یک کنترل به نام Marketing می سازیم سپس برای متد index موجود در کنترل نیز یک view می سازیم
132674

132675

حال برنامه را اجرا کنید و بر روی لینک بازاریابی کلیک نمایید خواهید دید کنترل و view موجود در پروژه جدید ساخته شده توسط شما اجرا می گردد


132676
سخن پایانی
این روش در اصل نمیشه بهش گفت ماژول نویسی ولی یک روش ساده برای انجام بعضی کار ها خواهد بود و در قسمت بعدی روش جالب و کامل تری رو آموزش می دم (البته اگه کمی بد توضیح دادم شما به بزرگواری خودتون ببخشید)

نمونه کد (http://s3.picofile.com/file/8196243876/%D9%8Fshop.rar.html)

mahsab
یک شنبه 29 آذر 1394, 23:48 عصر
پس کاربرد این روش چیه ؟