کتابخانه ای جهت پیاده سازی Unobtrusive Ajax در ASP.NET Core

کتابخانه ای جهت پیاده سازی Unobtrusive Ajax در ASP.NET Core
کتابخانه ای جهت پیاده سازی Unobtrusive Ajax در ASP.NET Core

قبلا توی MVC5 میتونستیم توسط Ajax.BeginForm و Ajax.ActionLink براحتی فرم ها و لینک های Ajax ایی درست کنیم که بهش Unobtrusive Ajax هم میگفتند.

متاسفانه این امکان (Ajax Helper ها) توی ASP.NET Core حذف شدند و قرار هم نیست اضافه بشند. البته همچنان میشه از Unobtrusive Ajax استفاده کرد ولی باید دستی بنویسیم و attribute هاش رو به تگ form اضافه کنیم.

مقاله زیر آموزش کاملش رو به همراه نکات خوبی ارائه داده.

https://www.dotnettips.info/post/2518


اخیرا اما برای مهاجرت پروژه ای که با MVC5 نوشته شده بود و زیاد از Ajax.BeignForm استفاده کرده بود به ASP.NET Core، خیلی به این امکان نیاز داشتم و دیدم که کسی تا حالا کتابخونه ای برای این کار نزده.

پس دست به کار شدم و نتیجه اش شد یه کتابخونه خیلی کامل و با امکاناتی بیش از پیش از جمله:

  • اگر از قابلیت Ajax Helper ها استفاده کنین به صورت خودکار فایل جاوااسکریپت Unobtrusive Ajax رو توی Layout شما تزریق میکنه و در صورت عدم استفاده اون رو تزریق نمیکنه. پس هم فایل js اضافی تو صفحه لود نمیشه و هم نگرانی بابت فراموش کردنش نخواهید نداشت
  • به صورت پیشفرض از یک جاوااسکریپ Embed شده استفاده میکنه ولی میتونین تنظیم کنین که از CDN (وبسایت cdnjs) استفاده کنه
  • با Upload فایل ها سازگاره
  • به صورت خودکار ForgeryToken رو ارسال میکنه و با [AntiForgeryTokenValidation] سازگاره
  • دارای اتریبیوت [AjaxOnly] برای محدودیت گذاری روی اکشن ها هست
  • دارای اکسنشن متد httpRequest.IsAjaxRequest() هست تا بتونین براساس اون تصمیم بگیرین PartialView برگردونین یا Json
  • دارای چندین متد overload اضافی هست برای راحتی بیشتر


  • تفاوت این کتابخونه با jQuery Ajax اینه که در عمل خود این کتابخونه هم از jQuery Ajax استفاده میکنه ولی برای جا هایی که سفارشی سازی خاصی لازم ندارید استفاده از ajax رو خیلی ساده تر میکنه.
  • توی صفحه اصلی ریپازیتوریش طریقه استفادش رو کامل توضیح دادم اما اگه خواستین میتونین پروژه رو دانلود/clone کنین و پروژه demo رو اجرا کنین تا چندتا از sample هاش رو ببینین


https://github.com/mjebrahimi/AspNetCore.Unobtrusive.Ajax

مقالات بیشتر در دات نت زوم

https://t.me/DotNetZoom