در قسمت قبل ، ویژگیهای ثبت اطلاعات یک اتاق جدید و سپس نمایش لیست آنها را تکمیل کردیم. در این قسمت میخواهیم امکان ویرایش آنها را نیز اضافه کنیم. افزودن دکمهی ویرایش، به رکوردهای لیست اتاقها و نمایش جزئیات رکورد در حال ویرایش
تا اینجا کامپوننت 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 ...
در ادامه قصد داریم یک پروژهی مدیریت هتل را پیاده سازی کنیم. این پروژه، دو قسمتی است. قسمت اول آن یک پروژهی Blazor Server، برای مدیریت هتل مانند تعاریف اتاقها است و پروژهی دوم آن از نوع Blazor WASM، برای مراجعهی کاربران عمومی و رزرو اتاقها است. هدف، بررسی نحوهی کار با هر دو نوع فناوری است. وگرنه میتوان کل پروژه را با Blazor Server و یا کل آنرا با Blazor WASM هم پیاده سازی کرد. در مورد نحوهی انتخاب و مزایا و معایب هرکدام از این فنا ...
تا اینجا با مبانی Blazor آشنا شدیم. در این قسمت میخواهیم مثالی را بررسی کنیم که بسیاری از این مفاهیم ابتدایی را پوشش میدهد. برای نمونه میخواهیم یک کامپوننت modal بوت استرپی را جهت دریافت تائیدیهی حذف اتاقهای تعریف شدهی در مثال این سری نمایش دهیم که به همراه مفاهیمی است مانند فرگمنتها جهت تعیین محتوای نمایشی مودال به صورت پویا، ارسال نتیجهی انتخاب بله یا خیر از کامپوننت دریافت تائید، به کامپوننت والد، ارسال پارامترها به کامپوننت فرز ...
در حین کار با برنامههای وب، چشمپوشی از جاوا اسکریپت عملا ممکن نیست؛ هرچند با Blazor، امکان انجام کارهایی را یافتهایم که پیشتر با MVC و یا Razor pages میسر نبودند، اما هیچگاه به تنهایی نمیتواند جایگزین کامل جاوا اسکریپت، در تولید برنامههای وب باشد. بنابراین ضروری است که نحوهی یکپارچگی جاوا اسکریپت را با برنامههای مبتنی بر Blazor، بررسی کنیم. ایجاد کامپوننت جدید BlazorJS
برای بررسی نحوهی تعامل جاوا اسکریپت و Blazor ...
تا اینجا به صورت بسیار مختصری با نحوهی مسیریابی برنامههای مبتنی بر Blazor توسط دایرکتیو page@ آشنا شدیم. برای مثال با داشتن تعریف زیر در ابتدای یک کامپوننت: @page "/LearnRouting"
<h3>Learn Routing</h3>
این کامپوننت جدید، صرفنظر از محل قرارگیری فایل آن که برای مثال در پوشهی Pages\LearnBlazor\LearnRouting.razor است، در مسیر https://localhost:5001/LearnRouting قابل دسترسی خواهد شد و برای تعریف مدخل منوی جدید آن، ب ...
بررسی ویژگی Attribute Splatting
برای تعریف المانهای فرمها نیاز است ویژگیهای قابل توجهی را مانند placeholder ،required ،maxlength و غیره، تعریف کرد که در صورت زیاد بودن تعداد المانهای یک فرم، مدیریت تعریف این ویژگیها مشکل میشود. به همین جهت قابلیت ویژهای مخصوص اینکار به نام Attribute Splatting در Blazor درنظر گرفته شدهاست. برای توضیح آن، ابتدا کامپوننت والد Pages\LearnBlazor\AttributeSplatting.razor و کامپوننت فرزند Pa ...
تا اینجا با نحوهی تعریف کامپوننتها و انتقال اطلاعات به آنها و برعکس، آشنا شدیم. در ادامه علاقمندیم اگر کامپوننتی را به صورت زیر تعریف کردیم: <Comp1>This is a content coming from the parent</Comp1>
محتوایی را که بین تگهای این کامپوننت فرزند، توسط کامپوننت والد تنظیم شدهاست، در قسمت مشخصی از UI کامپوننت فرزند نمایش دهیم.
معرفی مفهوم Render Fragment
برای درج محتوای تامین شدهی توسط کامپوننت و ...
Blazor 5x - قسمت هفتم - مبانی Blazor - بخش 4 - انتقال اطلاعات از کامپوننتهای فرزند به کامپوننت والد
در قسمت پنجم ، روش انتقال اطلاعات را از کامپوننتهای والد، به کامپوننتهای فرزند توسط پارامترها، بررسی کردیم. در این قسمت، حالت عکس آنرا بررسی خواهیم کرد. برای مثال فرض کنید که کاربری قصد انتخاب بیش از یک اتاق را دارد و checkbox انتخاب هر اتاق، درون کامپوننت مجزای آن اتاق تعریف شده و درون کامپوننت والد نمایش دهندهی لیست اتاقها نیست. اکنون میخواهیم با انتخاب اتاقها توسط کاربر، جمع تعداد اتاقهای انتخاب شده را در کامپوننت والد نمایش ده ...
در این قسمت میخواهیم انواع رویدادهای چرخهی حیات یک کامپوننت را بررسی کنیم. به همین جهت ابتدا دو کامپوننت جدید Lifecycle.razor و LifecycleChild.razor را به مثالی که تا این قسمت تکمیل کردهایم، اضافه کرده و آنهارا به صورت زیر جهت نمایش رویدادهای چرخهی حیات، تغییر میدهیم:
کدهای کامل کامپوننت Pages\LearnBlazor\Lifecycle.razor @page "/lifecycle"
@using System.Threading
<div class="border">
<h3> ...