
یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شیگرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفهای و امکانات کامل!
مشاهده بیشتر
یادگیری MVC Core از مبانی تا پیشرفته: شیگرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژههای کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!
مشاهده بیشترمشخصات مقاله
|آموزش جامع Microsoft Blazor|فراخوانی توابع جاوا اسکریپت در فریمورک Blazor|
فراخوانی توابع جاوا اسکریپت در فریمورک Blazor
فریمورک بلیزر
یک فریمورک سمت کاربر (frontend) است، اما هیچ دسترسی مستقیمی به DOM API مرورگر ندارد.
-
به عنوان توسعه دهندگان وب، می خواهیم به API های مرورگر و توابع جاوا اسکریپت موجود دسترسی داشته باشیم.
-
زمان هایی وجود دارد که کد .NET
در فریم ورک بلیزر
نیازمند فراخوانی یک تابع جاوا اسکریپت باشد.
-
برای مثال، یک فراخوانی جاوا اسکریپت می تواند قابلیت ها یا عملکرد مرورگر را از یک کتابخانه جاوا اسکریپت، برای یک
فریمورک بلیزر
، در معرض نمایش قرار دهد.
جاوا اسکریپت Interop
برنامه کاربردی فریمورک blazor
می تواند توابع جاوا اسکریپت را از .NET و متدهای .NET را از کد جاوا اسکریپت فراخوانی کند. این خصیصه فراخوانی یک متد JS از کد C# و بالعکس، به عنوان interop جاوا اسکریپت شناخته می شود.
-
فریم ورک بلیزر
برای اداره کردن اعمال نفوذ DOM و فراخوانی های API مرورگر، از interop جاوا اسکریپت استفاده می کند.
-
برای فراخوانی یک جاوا اسکریپت از .NET ، از IJSRuntime استفاده کنید که از طریق JSRuntime.Current در دسترس است.
حال بیاید دو تابع جاوا اسکریپت را به فایل index.html اضافه کنیم.
< app>Loading...< /app> < script src="_framework/blazor.webassembly.js"> < /script> < script type="blazor-boot"> < /script> < script> function JSMethod() { $ ("#demop").text("JavaScript function called from C#"); } < /script> < script> function CSMethod() { DotNet.invokeMethodAsync('BlazorApplication', 'CSCallBackMethod'); } < /script>
-
تابع JSMethod، متن تگ p که شامل شناسه demop است را به تابع جاوا اسکریپت فراخوانی شده از C# ، تنظیم خواهد کرد.
-
تابع CSMethod یک باز فراخوانی(call back) به متد CSCallBackMethod از C# که بعدا تعریف می شود، خواهد داشت.
حال یک مولفه جدید بلیزر با نام JSInterop.cshtml را بسازید و توابع زیر را اضافه کنید.
@ functions { protected static string message { get; set; } protected void CallJSMethod() { JSRuntime.Current.InvokeAsync< bool>("JSMethod"); } protected void CallCSMethod() { JSRuntime.Current.InvokeAsync< bool>("CSMethod"); } [JSInvokable] public static void CSCallBackMethod() { message = "C# function called from JavaScript"; } }
-
CallJSMethod و CallCSMethod با استفاده از متد JSRuntime.Current.InvokeAsync ، توابع JS ، JSMethod و CSMethod را فراخوانی می کنند.
-
متد JSRuntime.Current.InvokeAsync ، می تواند دو پارامتر داشته باشد : نام تابع JS و هر پارامتر دیگری که باید برای تابع JS فراهم شود. اما ما هیچ پارامتری را به تابع JS پاس نمی دهیم.
-
CSCallBackMethod یک متد ایستا است، و از تابع جاوا اسکریپت CSMethod فراخوانی خواهد شد.
-
دارای ویژگی [JSInvokable] است.
-
این متد، مقدار یک پیام متغیر رشته ای که رو UI نمایش داده خواهد شد را تعیین می کند.
اضافه کردن دو دکمه به فایل JSInterop.cshtml ، متدهای CallJSMethod و CallCSMethod را در رویداد onclick ، فراخوانی می کند.
@ page "/jsinterop" @ using BlazorApplication.Pages @ using Microsoft.JSInterop < h1>JavaScript Interop Demo< /h1> < hr /> < button class="btn btn-primary" onclick="@ CallJSMethod">Call JS Method< /button> < button class="btn btn-primary" onclick="@ CallCSMethod">Call C# Method< /button> < br /> < p id="demop">< /p> < br /> < p>@ message< /p> @ functions { protected static string message { get; set; } protected void CallCSMethod() { JSRuntime.Current.InvokeAsync< bool>("CSMethod"); } protected void CallJSMethod() { JSRuntime.Current.InvokeAsync< bool>("JSMethod"); } [JSInvokable] public static void CSCallBackMethod() { message = "C# function called from JavaScript"; } }
برای فراخوانی توابع جاوا اسکریپت و متد C# ، بر روی دکمه ها کلیک کنید.
