در ادامهی مثال این سری ، میخواهیم امکان ثبت و ویرایش اتاقها را (و یا امکانات رفاهی یک هتل را که به صورت تمرینی دقیقا مشابه افزودن مشخصات اتاقها، اضافه شده و کدهای آن از فایل پیوستی انتهای بحث قابل دریافت است) به کاربران اعتبارسنجی شدهی دارای نقش مدیریتی، محدودیت کنیم و نمیخواهیم عموم کاربران برنامه بتوانند در این قسمتها، تغییری را ایجاد کنند. برای این منظور از امکانات توکار و استاندارد ASP.NET Core Identity استفاده خواهیم کرد و این ...
در این قسمت میخواهیم بجای دریافت اطلاعات توضیحات یک اتاق، توسط یک text area متداول، برای مثال از Quill rich text editor استفاده کنیم. برای این منظور میتوان از کامپوننت Blazor محصور کنندهی آن به نام Blazored TextEditor کمک گرفت.
نصب کامپوننت Blazored TextEditor
ابتدا نیاز است بستهی نیوگت آنرا با اجرای دستور زیر، به پروژهی Blazor خود اضافه کرد: dotnet add package Blazored.TextEditor
و همچنین کتاب ...
Blazor 5x - قسمت 19 - کار با فرمها - بخش 7 - نکات ویژهی کار با EF-Core در برنامههای Blazor Server
تا قسمت قبل ، روشی را که برای کار با EF-Core درنظر گرفتیم، روش متداول کار با آن، در برنامههای ASP.NET Core Web API بود؛ یعنی این روش با برنامههای مبتنی بر Blazor WASM که از دو قسمت مجزای Web API سمت سرور و Web Assembly سمت کلاینت تشکیل شدهاند، به خوبی جواب میدهد؛ اما ... با Blazor Server یکپارچه که تمام قسمتهای مدیریتی آن سمت سرور رخ میدهند، خیر! در این مطلب، دلایل این موضوع را به همراه ارائه راهحلی، بررسی خواهیم کرد.
ط ...
در ب خش اول آشنایی با Feature Toggle ، با مفهوم Feature Toggle آشنا شدیم و در بخش پایانی مقاله، به معرفی یکی از کتابخانههای نوشته شده توسط مایکروسافت پرداختیم. در این مقاله به صورت کاربردیتر به استفاده از کتابخانهی مورد استفاده میپردازیم. برای ادامه نیاز هست بستهی زیر را که مخصوص برنامههای مبتنی بر ASP.NET CORE است نصب نمایید : Install-package Microsoft.FeatureManagement.AspNetCore
...
در این قسمت میخواهیم اطلاعات اتاقهای ثبت شده را به همراه تصاویر مرتبط با آنها، حذف کنیم و همچنین به یک خطای مهم در حین کار با EF-Core برسیم و متوجه شویم که روش کار با DbContext در برنامههای مبتنی بر Blazor Server .... با روش کار متداول با آن در برنامههای Web API، یکی نیست!
مشکل حذف تصاویر آپلود شده
در قسمت قبل ، این امکان را مهیا کردیم که کاربران بتوانند پیش از ثبت اطلاعات یک اتاق، تصاویر آنرا به سرور آپلود ...
از زمان Blazor 5x، پشتیبانی توکار از آپلود فایلها، به آن اضافه شدهاست و پیش از آن میبایستی از کامپوننتهای ثالث استفاده میشد. در این قسمت نحوهی استفاده از کامپوننت آپلود فایلهای Blazor را بررسی میکنیم. همچنین یک نمونه مثال، از فرمهای master-details را نیز با هم مرور خواهیم کرد. افزودن فیلد آپلود تصاویر، به فرم ثبت اطلاعات یک اتاق
در ادامه به کامپوننت Pages\HotelRoom\HotelRoomUpsert.razor که تا این قسمت آن ...
در ادامه میخواهیم برای هر اتاق ثبت شده، تعدادی تصویر مرتبط را نیز به سرور آپلود کرده و مشخصات آنها را در بانک اطلاعاتی ثبت کنیم. به همین جهت در این قسمت سرویس ثبت اطلاعات تصاویر در بانک اطلاعاتی و سرویس آپلود فایلها را تهیه میکنیم. تعریف موجودیت و DbSet تصاویر یک اتاق هتل
برای اینکه بتوان اطلاعات تصاویر آپلودی را در بانک اطلاعاتی ثبت کرد، نیاز است یک رابطهی یک به چند را بین یک اتاق و تصاویر مرتبط با آن برقرار کرد. ب ...
فرض کنید میخواهید برای بخشهایی از نرم افزاری که طراحی کردهاید ، امکانی را در نظر بگیرید که بتوانید زمانیکه نرم افزار در حال استفادهاست، قابلیتهایی از آنرا فعال یا غیرفعال نمایید؛ بدون اینکه نرم افزار از دسترس خارج شود. Feature Toggle که تحت عنوان Feature Flag هم شناخته میشود همین امکان را برای ما به ارمغان میآورد و ما را قادر میسازد تا قابلیتهایی را از نرم افزار، فعال یا غیرفعال کنیم، بدون اینکه نیاز باشد نرم افزار از دسترس مشتری ...
در قسمت قبل ، ویژگیهای ثبت اطلاعات یک اتاق جدید و سپس نمایش لیست آنها را تکمیل کردیم. در این قسمت میخواهیم امکان ویرایش آنها را نیز اضافه کنیم. افزودن دکمهی ویرایش، به رکوردهای لیست اتاقها و نمایش جزئیات رکورد در حال ویرایش
تا اینجا کامپوننت Pages\HotelRoom\HotelRoomUpsert.razor دارای یک چنین مسیریابی است: @page "/hotel-room/create"
در ادامه میخواهیم اگر کاربری برای مثال به آدرس hotel-room/edit/1 مراجعه ...
در ادامه قصد داریم از سرویس زیر که در قسمت قبل تکمیل شد، در یک برنامهی Blazor Server استفاده کنیم: namespace BlazorServer.Services
{
public interface IHotelRoomService
{
Task<HotelRoomDTO> CreateHotelRoomAsync(HotelRoomDTO hotelRoomDTO);
Task<int> DeleteHotelRoomAsync(int roomId);
IAsyncEnumerable<HotelRoomDTO> GetAllHotelRoomsAsync();
Task<HotelRoo ...