تک تودِی
فناوری های روز را با ما دنبال کنید

آموزش تصویریMVC.NET – فصل دوم

5
امتیاز دهید

با عرض سلام و خسته نباشید

سری دوم آموزش تصویری برنامه نویسی به زبان MVC.NET رو برای شما دوستان آماده کردم

امیدوارم خوشتون بیاد ( فایل پی دی اف + فایل تصویری + متن )

میتونید فایل پی دی اف رو از این لینک دریافت کنید

همچنین برای دوستانی هم امکان دیدن فیلم و یا دانلود فایل وجود نداره متن کامل رو قرار میدم.

دانلود فیلم آموزش برنامه نویسی MVC.NET قسمت دوم – با حجم ۲۱ مگابایت

مدت زمان فیلم ۲۲ دقیقه است

——>>>>>>>>>>   متن درس دوم

در فصل قبل ما در مورد مقاهیم پایه ای و همچنین اهداف و نکاتی پیرامون ASP.NET MVC صحبت کردیم . در این فصل در ادامه مبحث قبلی شروع به ساخت یک پروژه معمولی همراه با دیتابیس می نماییم. از نکات و ترفندهای طراحی (DESIGN) نیز چشم پوشی می کنیم و بیشتر به اصول و نکات مهم برنامه نویسی می پردازیم. هدف روشن شدن مفاهیم بنیادی برنامه نویسی تحت ASP.NET MVC میباشد.

—– این قسمت در آینده کامل می شود ——

Ø شروع کار با پروژه خالی!!

بریم تا اولین پروژه ی رسمی خودمون رو شروع کنیم!!!! خوب در اینجا میبایست ابتدا یک پروژه ایجاد کنیم و سپس محتوای صفحات ان را پاک ( حذف ) نماییم… چطور؟؟  مطابق مراحل زیر:

۱-     ویژوال استودیو را باز می کنیم.

۲-     از منوی استارت ، پروژه جدید را انتحاب می نماییم. ( Menu Option File> New Project )

۳-     از پنجره باز شده زبان C#  را انتخاب و گزینه ASP.NET MVC Web Application را انتخاب می نماییم

۴-     نامی برای این پروژه انتخاب می نماییم. بنده نام ToyStore را انتخاب کرده ام.

همانطور که در بخش اول گفتم هنگامی که بر روی گزینه OK کلیک می کنید یک پنجره محاوره ای باز می شود که شما می بایست آن را نیز OK نمایید.

همچنین در بخش اول نیز در باره صفحاتی که به طور خودکار توسط ویژوال استودیو ساخته می شوند صحبت کردم. مطابق آنچه در زیر می گویم فایل هایی را از پروژه حذف نمایید:

C# CODE

ControllersHomeController.cs

ControllersHomeControllerTest.cs

ViewHomeAbout.aspx

ViewHomeIndex.aspx

VB CODE

ControllersHomeController.vb

ControllersHomeControllerTest.vb

ViewHomeAbout.aspx

ViewHomeIndex.aspx

Ø ساخت دیتابیس

ما برای این پروژه نیاز به یک دیتابیسی داریم تا محتویات مورد نظر را در آن ذخیره کنیم. نوع دیتابیس مهم نیست زیرا ASP.NET MVC با تمامی پایگاه داده ها رابطه ی خوبی دارد و آنها را پشتیبانی می نماید منجمله Oracle, MySql , Microsoft Sql Server و …

در این کتاب  ( و اصولا تمامی عزیزانی  که با محصولات مایکروسافت کار می کنند ) بنده از پایگاه داده ی مایکروسافت یعنی SQL Server استفاده می نمایم

برای ساخت دیتابیس مراحل زیر را در همان محیطی که هستیم یعنی ویژوال استودیو، طی می کنیم:

۱-     بر روی فولدر App_Data کلیک سمت راست ( Right Click ) می کنیم

۲-     از منوی ظاهر شده اضافه و سپس آیتم جدید را انتخاب می نماییم( Add>New Item )

۳-     در پنجره روبرو گزینه ی  SQL Server database را بر می گزینیم و نامی برای ان انتخاب می کنیم

۴-      و در نهایت بر روی گزینه ADD کلیک کنید

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

۵-     از فولدر App_Data و فایل ToyStore.db ( یعنی همان دیتابیسی که در مرحله ۳ نامگذاری کردیم ) انتخاب و دابل کلیک می نماییم تا Server Explorer باز شود.

۶-     از پنجره باز شده بر روی Tables راست کلیک کرده و Add New Table را انتخاب می نماییم.

۷-     محیطی مانند شکل زیر ظاهر می گردد.

۸-     مطابق فهرست زیر فیلد ها را پر نمایید ( در آینده یا در کتابی جداگانه در مورد ویژگی های و به طور کل ساخت جداول در پایگاه داده Microsoft Sql Server صحبت می کنم )

Allow Nulls Data Type Column Name
False Int Id
False Nvarchar(100) Name
False Nvarchar(max) Description
False money Price

مطابق شکل زیر

۹-     فیلد اول یعنی Id را به عنوان identity  انتخاب می نماییم و آن را برابر YES می گذاریم ( مطابق شکل )

۱۰- و همچنین این فیلد را به عنوان کلید اصلی انتخاب می کنیم ( بر روی فیلد راست کلیک کرده و گزینه Set Primary Key را انتخاب می نماییم.)

۱۱- حال کافیست برای ذخیره دکمه Save  را بزنید و یا از روی کیبورد دکمه های CTRL + S را همزمان فشار دهید

۱۲- در این مرحله از شما می خواهد نامی برای این جدول خود انتخاب نمایید. بنده در اینجا نام Product را انتخاب می کنم.

تبریک می گم شما اولین جدول خود را ساختید و اولین آجر این ساختمان را بنا نهادید ( بنازم به این ادبیات ) . حال برای نمونه یک سری داده معمولی و تست وارد می کنیم. با کلیک سمت راست بر روی نام جدول (از قسمتServer Explorer و با کلیک بر روی علامت + Table ) و انتخاب گزینه Show Table Data می نوانید این کار را انجام دهید.

حال که دیتابیس را ایجاد نموده ایم می رویم سراغ MODEL این پروژه

Ø ساخت مدل ( MODEL )

ما برای فهماندن به دیاتبیس نیاز داریم تا مدلی از کلاس ها را بسازیم. راحت ترین راه ساخت کلاس ها ، استفاده از نقشه رابطه ای شی گرا که همان Object Relational Mapping(ORM) است ( ببخشید خیلی بد ترجمه کردم… ). این ORM ابزاریست که به صورت اتوماتیک از دیتابیس کلاس ها را می سازد. ( این راحت ترین توضیحی بود که میشد داد )

شما به دلخواه خود می توانید از ORM همراه ASP.NET MVC که به صورت فریمورک است استفاده نمایید. همچنین ASP.NET MVC با تکنولوژی های مختلف ارتباط با دیتابیس مانند Microsoft LINQ to SQL ، NHibernate و همچنین Microsoft Entity Framework مطابقت و سازگاری دارد.

بنده در این کتاب از Microsoft Entity Framework برای ساخت مدل کلاس ها استفاده می کنم. بنده از این تکنولوژی استفاده می کنم چون اعتقاد دارم ( و فکر کنم تو سایت مایکروسافت بود که خوندم ) این راه حل پیشنهادی مایکروسافت برای دسترسی به داده است.

حال برای ساخت مدل کلاس های داده ای ( Data Model Classes ) :

۱-     با کلیک بر روی فولدر MODEL از قسمت Solution Explorer و انتخاب گزینه Add>New Item

۲-     از مجموعه سمت چپ که همان گروه ها است گزینه Data را انتخاب و از قسمت سمت راست ADO.NET Entity Data Model را انتخاب نمایید ( مانند شکل زیر )

۳-     نامی برای این مدل انتخاب می نماییم. بنده نام ToyStoreDataModel را انتخاب کرده ام.

حال وارد مرحله ای جدید می شویم. پس از اینکه دکمه Add را کلیک کردیم وارد مرحله ویزاردی می شویم. مطابق مراحل زیر عمل می نماییم:

۱-     از مرحله اول گزینه ی Generate from database  را انتخاب می نماییم و Next را می زنیم.

۲-      در مرحله بعدی می بایست کانکشن مورد نظر را انتخاب می کنیم. و نامی که این کانکشن در فایل web.cofig ایجاد می کند را انتخاب می کنیم.

۳-      در این مرحله مدل شی از دیتابیس را انتخاب می نماییم. در این قسمت جداولی را که می خواهیم بر روی آنها اعمالی انجام دهیم را انتخاب می کنیم. در حال حاضر فقط جدول Product موجود است. پس آن را انتخاب می نماییم. و نامی برای فضای نامی ( namespace )  آن انتخاب می کنیم. بنده در اینجا نام Models را برگزیدم.

۴-     و در نهایت بر روی دکمه Finish کلیک می کنیم.

ملاحظه می کنیم که فضاهای نامی به فولدر Reference اضافه شده است. همچنین به  فولدر Models نیز یک فایل اضافه شده است. و در صفحه پیش رو ظاهری مطابق شکل دیده می شود

راحت ترین و محتمل ترین عمل این است که شما در این صفحه می توانید کلاس های ایجاد شده را متناسب با روند پروژه و نوع نامگذاری های ( پرستیژ کاری و استاندارد کاری هر شخص ) خود تغییر دهید. کافیست با دابل کلیک و یا کلیک سمت راست و انتخاب گزینه Rename این عمل را انجام دهید.

در این مرحله توانستیم با موفقیت توانستیم Data Model Classes یا همان مدل کلاس های داده ای را ایجاد کنیم. ما از این کلاس ها برای نشان دادن دیتابیس خودمان ( که برای بنده ToyStoreDB ) همراه با رابط های برنامه ای ASP.NET MVC می باشد. به زبان ساده تر : یعنی به کمک این کلاس ها می توانیم دیتابیس را در MVC نشان دهیم.

Ø ساخت کنترلر ها ( Controllers )

کنترلرها ( Controllers  ) در ASP.NET MVC Application ها جریان اجرا شدن برنامه را کنترل می کنند. کنترلی که این درخواست را می دهد به صورت پیش فرض می باشد و نام آن کنترلر Home می باشد. ما احتیاج داریم تا این کنترلر را ایجاد کنیم. ( به زبان ساده تر اینجور بگم : همونطور که وقتی می خواهیم یک سایت را بر روی هاست آپلود کنیم  برای نمایش حتماً باید نام آن صفحه یکی از موارد index , default باشد- حال آنکه پسوند آن مهم نیست چه PHP باشد چه HTML و چه … )

برای ایجاد این کنترلر باید مراحل زیر را طی کنیم:

۱-     بر روی فولدر Controllers کلیک سمت راست کرده ( و یا از کلیدهای ترکیبی CTRL+M  استفاده نمایید) و سپس گزینه ی Add Controller را انتخاب نمایید.

۲-     مطابق شکل پنجره ای ظاهر می شود که می بایست نامی را برای این کنترلر انتخاب نمایید. بهتر است از نامی که بنده استفاده می کنم استفاده نمایید : HomeController ، تیک متن پایین این تکست باکس را نیز فعال نمایید.

۳-     سپس بر روی دکمه ی Add کلیک نمایید.

این صفحه پس از ایجاد شامل کد های زیر است :

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

namespace ToyStore.Controllers

{

public class HomeController : Controller

{

//

// GET: /Home/

public ActionResult Index()

{

return View();

}

//

// GET: /Home/Details/5

public ActionResult Details(int id)

{

return View();

}

//

// GET: /Home/Create

public ActionResult Create()

{

return View();

}

//

// POST: /Home/Create

[HttpPost]

public ActionResult Create(FormCollection collection)

{

try

{

// TODO: Add insert logic here

return RedirectToAction(“Index”);

}

catch

{

return View();

}

}

//

// GET: /Home/Edit/5

public ActionResult Edit(int id)

{

return View();

}

//

// POST: /Home/Edit/5

[HttpPost]

public ActionResult Edit(int id, FormCollection collection)

{

try

{

// TODO: Add update logic here

return RedirectToAction(“Index”);

}

catch

{

return View();

}

}

//

// GET: /Home/Delete/5

public ActionResult Delete(int id)

{

return View();

}

//

// POST: /Home/Delete/5

[HttpPost]

public ActionResult Delete(int id, FormCollection collection)

{

try

{

// TODO: Add delete logic here

return RedirectToAction(“Index”);

}

catch

{

return View();

}

}

}

}

وقتی ما در مرحله شماره ۲ گزینه Add action methods for Create, Update, and Details scenario  را انتخاب کردیم ، در کدهای این صفحه مشاهده می کنیم که به طور خودکار تمامی این روندها را کدنویسی کرده و دیگر لازم نیست تا ما دوباره انها را در کلاس مجزا بنویسیم و به مشکلات احتمالی انسانی برخورد کنیم. همچنین در این صفحه شامل توابع متفاوتی هستیم که توضیح مختصری در ارتباط با هر یک می دهم:

Index (): به صورت پیشفرض در تمامی کنترلر ها عمل می کند و وجود دارد. به عنوان مثال لیست تمامی آیتم ها را نمایش می دهد

Details (id): این عملگر مشخصات آیتم ها را نمایش می دهد.

Create (): این عملگر برای ایجاد آیتم جدید می باشد.

Create (collection): این عمل می کند برای وارد کردن آیتم جدید به دیتابیس

Edit (id): این برای ویرایش آیتم های موجود بکار برده می شود.

Edit (id, collection) : جهت به روز رسانی آیتم های موجود در دیتابیس مورد استفاده است.

به طور کلی، Home Controller          تنها ریشه ی موارد بالا را شامل می شود. هرچه به جلو برویم و بر دانش خود بیافزاییم می توانیم کارایی این موارد را بهتر درک کنیم و به جا از آنها استفاده نماییم. در اینجا به عنوان نمونه می خواهیم یک تغییرات کوچکی در صفحه ی Home Controllers بدهیم. می توانید در آدرس ControllersHomeControllers.cs این صفحه را پیدا کنید و مانند بنده کد های این صفحه را با آنچه در زیر میاورم  جابجا کنید.:

using System.Linq;

using System.Web.Mvc;

using ToyStore.Models;

namespace ToyStore.Controllers

{

public class HomeController : Controller

{

private ToyStoreDBEntities _dataModel = new ToyStoreDBEntities();

//

// GET: /Home/

public ActionResult Index()

{

return View(_dataModel.Products.ToList());

}

//

// GET: /Home/Create

public ActionResult Create()

{

return View();

}

//

// POST: /Home/Create

[AcceptVerbs(HttpVerbs.Post)]

public ActionResult Create([Bind(Exclude = “Id”)]Product productToCreate)

{

if (!ModelState.IsValid)

return View();

try

{

_dataModel.AddToProducts(productToCreate);

_dataModel.SaveChanges();

return RedirectToAction(“Index”);

}

catch

{

return View();

}

}

//

// GET: /Home/Edit/5

public ActionResult Edit(int id)

{

return View();

}

//

// POST: /Home/Edit/5

[HttpPost]

public ActionResult Edit(int id, FormCollection collection)

{

try

{

// TODO: Add update logic here

return RedirectToAction(“Index”);

}

catch

{

return View();

}

}

}

}

در ابتدا ما یک فیلد اختصاصی با نام  _dataModel از نوع DBStoreEntities  تعریف کردیم. ( به زبون خودمون یعنی ازش یه instant گرفتیم.) این DBStoreEntities نیز همان کلاسی است که ما به صورت ویزاردی در مراحل قبل ایجاد کردیم.

ما از این کلاس برای ارتباط با دیتابیس استفاده می نماییم.

تابع عملیاتی index() نیز برای بازگرداندن لیست محصولات تعریف شده است . یعنی _dataModel.Products.ToList()  لیست تمامی محصولات را از دیتابیس برای ما برمی گرداند.

در اینجا دو تابع عملیاتی با نام Create() داریم. تابع اولی در ابتدا جهت ایجاد محصولات جدید عمل می نماید. و تابع دومی نیز عمل درج محصولات جدید در دیتابیس است.

در حقیقت تابع دوم Create() عمل تعریف و قبول ایجاد محصولات را بر عهده دارد. در نهایت تابع عملگر Create()  عمل فراخوانی متدها جهت درج محصولات به دیتابیس می باشد توسط کد :

_dataModel.AddToProducts (productToCreate);

_dataModel.SaveChanges ();

حال در کنترلر Home ما ، شامل مهمترین و لازم ترین موارد و کدهای مربوط به دیتابیس است. ما می توانیم از این کنترلر برای بازگردانی محصولات استفاده نماییم. همچنین از این کنتترلر برای ایجاد محصولات جدید استفاده می نماییم.

در نهایت این را اضافه کنم که هر دو تابع عملگر Index() و Create()  جهت نمایش داده های داخل دیتابیس است. در مرحله بعد این نمایش یا همان Views را با هم ایجاد می نماییم.

Ø ایجاد نمایشگر ها ( View )

نمایشگر ها در MVC شامل تمامی تگ های HTML و نمایشگرهای منطقی لازم برای ایجاد View ها در صفحات HTML.

البته این نکته را هم بگم که شما حتماً نباید برای نمایش از کد ها و المنت های HTML استفاده نمایید. بر فرض شما می توانید از تکنولوژی سیلورلایت برای ظاهر استفاده نمایید.

در مثال پیش رو که تا به حال انجام داده ایم، نیاز به دو صفحه برای نمایش ( یا همان VIEW ) داریم. صفحه اول یا همان INDEX و صفحه ایجاد یا همان CREATE .  ما برای نمایش محصولات از INDEX استفاده می کنیم  و برای ایجاد محصولات از صفحه CREATE استفاده می نماییم.

ü ایجاد و اضافه کردن Index View :

برای شروع به ایجاد کردن صفحه INDEX می پردازیم. مراحل این کار را با هم  شروع می کنیم:

۱-     قبل از هر چیز بهتر است ابتدا پروژه خود را بسازیم ( منظورم در اینجا همون BUILD است). از منوی  Build گزینه اول که همان Build Solution  است را انتخاب می نماییم. یا از کنترل های ترکیبی CTRL+SHIFT+B استفاده نمایید.

۲-     در صفحه HomeController.cs از قسمت کدهای این صفحه بر روی تابع Index() سمت راست کلیک کرده و از منوی ظاهر شده گزینه Add View  را انتخاب نمایید. ( مطابق شکل زیر )

۳-      پنجره ای ظاهر می شود. در این پنجره ابتدا گزینه ی Create a strongly-typed view را انتخاب نمایید.

۴-      سپس از قسمت پایین یعنی view dataclass که فعال شده است کلاس ToyStore.Models.Product  را پیدا و انتخاب نمایید.

۵-     سپس از لیست بعدی یعنی قسمت view content گزینه List را انتخاب نمایید. مطابق شکل زیر

۶-      در نهایت گزینه Add را بزنید.

در نهایت یک سری فایل به پروژه شما اضافه می شود. کافیست پروژه را اجرا نماید ( F5 را بزنید ) با تصویری مشابه شکل زیر روبرو می شوید که محتویات دیتابیس شما را همراه با مشخصات/ حذف / ویرایش / و اضافه است.

چنانچه به کدهای این صفحه مراجعه نمایید متوجه می شوید که این صفحه توسط تگ های HTML ایجاد شده است:

<%@ Page Title=”” Language=”C#” MasterPageFile=”~/Views/Shared/Site.Master” Inherits=”System.Web.Mvc.ViewPage<IEnumerable<ToyStore.Models.Product>>” %>

<asp:Content ID=”Content1″ ContentPlaceHolderID=”TitleContent” runat=”server”>

Index

</asp:Content>

<asp:Content ID=”Content2″ ContentPlaceHolderID=”MainContent” runat=”server”>

<h2>Index</h2>

<table>

<tr>

<th></th>

<th>

Id

</th>

<th>

Name

</th>

<th>

Description

</th>

<th>

Price

</th>

</tr>

<% foreach (var item in Model) { %>

<tr>

<td>

<%: Html.ActionLink(“Edit”, “Edit”, new {.Id }) %> |

<%: Html.ActionLink(“Details”, “Details”, new {.Id })%> |

<%: Html.ActionLink(“Delete”, “Delete”, new {.Id })%>

</td>

<td>

<%: item.Id %>

</td>

<td>

<%: item.Name %>

</td>

<td>

<%: item.Description %>

</td>

<td>

<%: String.Format(“{0:F}”, item.Price) %>

</td>

</tr>

<% } %>

</table>

<p>

<%: Html.ActionLink(“Create New”, “Create”) %>

</p>

</asp:Content>

این صفحه شامل موارد متفاوتی است که به بررسی و ایجاد تک تک آنها خواهیم پرداخت.

در ابتدا صفحه Create New یا همان ایجاد محصول جدید را با هم شروع به ایجاد می نماییم.

ü ایجاد صفحه Create New

برای ایجاد محصول جدید ما به این صفحه نیاز داریم. با توجه به مراحل زیر به ساخت  طراحی این صفحه می پردازیم:

۱-     مطابق مرحله قبل، در صفحه HomeController.cs بر روی تابع Create() سمت راست کلیک کرده و از منوی باز شده گزینه Add View را انتخاب می نماییم.

۲-     پنجره ای ظاهر می شود. در این پنجره ابتدا گزینه ی Create a strongly-typed view را انتخاب نمایید.

۳-      سپس از قسمت پایین یعنی view dataclass که فعال شده است کلاس ToyStore.Models.Product  را پیدا و انتخاب نمایید.

۴-     سپس از لیست بعدی یعنی قسمت view content گزینه Create را انتخاب نمایید. مطابق شکل زیر

۵-     در نهایت بر روی گزینه Add کلیک می نماییم.

این صفحه نیز به صورت اتوماتیک ایجاد می شود و محل آن در ViewHomeCreate.aspx است. مانند شکل زیر

که شامل کدهای زیر می باشد:

<%@ Page Title=”” Language=”C#” MasterPageFile=”~/Views/Shared/Site.Master” Inherits=”System.Web.Mvc.ViewPage<ToyStore.Models.Product>” %>

<asp:Content ID=”Content1″ ContentPlaceHolderID=”TitleContent” runat=”server”>

Create

</asp:Content>

<asp:Content ID=”Content2″ ContentPlaceHolderID=”MainContent” runat=”server”>

<h2>Create</h2>

<% using (Html.BeginForm()) {%>

<%: Html.ValidationSummary(true) %>

<fieldset>

<legend>Fields</legend>

<div>

<%: Html.LabelFor(model => model.Id) %>

</div>

<div>

<%: Html.TextBoxFor(model => model.Id) %>

<%: Html.ValidationMessageFor(model => model.Id) %>

</div>

<div>

<%: Html.LabelFor(model => model.Name) %>

</div>

<div>

<%: Html.TextBoxFor(model => model.Name) %>

<%: Html.ValidationMessageFor(model => model.Name) %>

</div>

<div>

<%: Html.LabelFor(model => model.Description) %>

</div>

<div>

<%: Html.TextBoxFor(model => model.Description) %>

<%: Html.ValidationMessageFor(model => model.Description) %>

</div>

<div>

<%: Html.LabelFor(model => model.Price) %>

</div>

<div>

<%: Html.TextBoxFor(model => model.Price) %>

<%: Html.ValidationMessageFor(model => model.Price) %>

</div>

<p>

<input type=”submit” value=”Create” />

</p>

</fieldset>

<% } %>

<div>

<%: Html.ActionLink(“Back to List”, “Index”) %>

</div>

</asp:Content>

Ø نتیجه گیری

در این بخش ما با استفاده از تکنولوژِی ASP.NET MVC یک پروژه ساده همراه با دیتابیس را ایجاد کردیم.. همچنین Model, View و  Controllers را ایجاد کردیم.

در ابتدا ما یک دیتابیس به همراه مدل پایگاه داده را ایجاد کردیم. برای این کار از Microsoft SQL Server Express  استفاده کردیم. و برای ایجاد کلاس ها از Microsoft Entity Framework استفاده نمودیم.

در مرحله بعد ما کنترل های صحه اول را ایجاد کردیم. برای این کار نیز از وایزارد ویژوال استودیو استفاده کردیم تا به صورت اتوماتیک ایجاد نماید. همچنین یک سری کد برای دسترسی منطقی به دیتابیس را نوشتیم.

و در نهایت ما دو نمایش ساختیم یکی برای نمایش محصولات و دیگری برای اضافه کردن محصول.

به همین راحتی….

در پایان از شما دوستان می خواهم چنانچه نظر  یا انتقادی درباره این مطالب دارید حتماً با بنده در میان بگذارید.

5 نظرات
  1. محمد رضا می گوید

    سلام.خیلی ممنون از آموزشهای خوبتون.سری بعدی آموزشهارو نمیزارین رو سایت.یا توی برنامه نویس؟
    اگر نمیزارید،پس لطفا یه مرجع خوب بهم پیشنهاد کنید.خیلی ممنون:)

  2. id_mohamadi می گوید

    سلام و تشکر از سایت خوب شما
    میخاستم طریقه اپلود عکس و همچنین کامپوننت ckeditor را در mvcاموزش بدهید.
    ممنون

  3. مهتاب می گوید

    متشکر و ممنونم.

  4. سیاوش می گوید

    با سپاس از شما

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.