<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های Mohsen Mahmoudjanlou</title><link>https://virgool.ir/feed/@mohsen.mahmoudjanlou</link><description></description><language>fa</language><pubDate>2026-11-12 09:58:33</pubDate><image><url>https://files.virgool.ir/upload/users/17311/avatar/avatar.png</url><title>Mohsen Mahmoudjanlou</title><link>https://virgool.ir/@mohsen.mahmoudjanlou</link></image><item><title>آموزش Ajax در ASP.Net core, razor page</title><link>https://virgool.ir/@mohsen.mahmoudjanlou/آموزش-ajax-در-aspnet-core-razor-page-miy212qurkip</link><description>ajaxسلام، اول اینکه خیلی نمیشه اسمشو آموزش گذاشت، بیشتر یه راهنماست.ارسال اطلاعات به صورت Ajax  در razor page یه مقدار با قبل متفاوت هست، تفاوت هم که نه، یه چندتا ریزه کاری کوچیک داره.اول اینکه ما برای دریافت اطلاعات از صفحه چند تا متد داریم مثل:  OnGetOnPostOnPutOnGetAsyncOnPostAsyncOnPutAsyncمتد OnGet وقتی صفحه لود میشه اتفاق میوفته و همینطور موقع ارسال اطلاعات به صورت get و متد OnPost هم موقع ارسال اطلاعات به صورت post. حالا اگه ما بخوایم یه متد خاص رو صدا بزنیم میتونیم به 2 روش عمل کنیم:public void OnPostSave(){&#xA;//This is my save Handler&#xA;}&#xA; public void OnPostDelete(){ //This is my save Handler } &#xA;  &lt;form id=&#34;post-form&#34; asp-page-handler=&#34;Save&#34; method=&#34;post&#34; action=&#34;~/Managing/Products&#34; role=&#34;form&#34;&gt;&#xA;  &lt;input type=&#34;submit&#34; value=&#34;ذخیره&#34;  /&gt; &#xA; &lt;/form&gt; &#xA;  اینجااومدیممتدsaveروفراخونیکردیم. حالا اگه بخوایم 2 تا handler رو از داخل یه فرم فراخونی کنیم به روش زیر عمل می کنیم.  &lt;form id=&#34;post-form&#34; method=&#34;post&#34; action=&#34;~/Managing/Products&#34; role=&#34;form&#34;&gt;   &#xA;  &lt;input type=&#34;submit&#34;  asp-page-handler=&#34;Save&#34; value=&#34;ذخیره&#34;  /&gt;  &#xA;    &lt;input type=&#34;submit&#34;  asp-page-handler=&#34;Delete&#34; value=&#34;حذف&#34;  /&gt;  &#xA;   &lt;/form&gt;  همونطوری که توجه کردید اینجا هندلر های ما پیشوند OnPost دارن که حتما باید در اول اسمشون قرار بگیره.حالا ما میخوایم اطلاعات رو به صورت اجکسی ارسال کنیم. برای این کار تو حالت معمولی از کد زیر استفاده می کنیم:$(function () {$.ajax({&#xA;    url : &#39;http://www.mysite.com/index&#39;,&#xA;    type : &#39;GET&#39;,&#xA;    data : {&#xA;        &#39;numberOfWords&#39; : 10&#xA;    },&#xA;    dataType:&#39;json&#39;,&#xA;    success : function(data) {              &#xA;        alert(&#39;Data: &#39;+data);&#xA;    },&#xA;    error : function(request,error)&#xA;    {&#xA;        alert(&#34;Request: &#34;+JSON.stringify(request));&#xA;    }&#xA;});   ولی اگه از این کد در razor page استفاده کنیم می بینیم که با خطا روبرو میشیم. خطای 400! ( bad request error )حالا راه حل چیه؟!برای اینکه از دست این ارور مزاحم خلاص بشین چند تا کار کوچیک هست که باید انجام بدین.اول، در   ASP.NET Core MVC 2.0 متد  FormTagHelper میاد و در تگ های فرم توکن  anti-forgery  رو تزریق می کنه، حالا برای اینکه اسکریپت ajax ما کار کنه باید این توکن رو تو هدر خودش ارسال کنه، اما اول باید سرویسش رو به صورت زیر اضافه کنیم.public void ConfigureServices(IServiceCollection services)&#xA;{&#xA;services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);&#xA;...&#xA; services.AddAntiforgery(o =&gt; o.HeaderName = &#34;XSRF-TOKEN&#34;); &#xA;}تو فایل Startup.cs تکه کد bold شده بالا رو وارد کنید.$.ajax({&#xA;url: &#39;http://localhost:62117/Managing/Products?handler=Save&#39;,&#xA;beforeSend: function (xhr) { xhr.setRequestHeader(&#34;XSRF-TOKEN&#34;,$(&#39;input:hidden[name=&#34;__RequestVerificationToken&#34;]&#39;).val()); },&#xA;data : {         &#39;numberOfWords&#39; : 10     }, &#xA;dataType:&#39;json&#39;,&#xA;contentType: false, &#xA;processData: false, &#xA;type: &#39;POST&#39;, &#xA;success: function (resp) {&#xA; alert(resp);  &#xA; }  &#xA; });و همینطور در کد اسکریپت خودمون هم توکن رو در هدر قرارش میدیم تا ارسال بشه و بعد از اجرا می بینیم که عملیات با موفقیت انجام میشه.اگه در کد بالا به url دقت کنید می بینید که ما برای استفاده از handler مورد نظرمون به چه شکلی عمل کردیم.کم و کاستی ها رو به بزرگی خودتون ببخشید، موفق باشید.منبع</description><category>Mohsen Mahmoudjanlou</category><author>Mohsen Mahmoudjanlou</author><pubDate>Tue, 11 Jun 2019 11:17:09 +0430</pubDate></item><item><title>آخرین پروژه ای که انجام دادم</title><link>https://virgool.ir/@mohsen.mahmoudjanlou/-xu2ivdw4g13g</link><description>سلام، چند روز بیشتر نیست که با ویرگول آشنا شدم و مطالب زیادی رو تو همین چند روز خوندم و همیشه هم دوست داشتم بنویسم و بالاخره بعد از کلنجار رفتن با خودم تصمیم گرفتم از آخرین پروژه ای که این چند وقته درگیرش بودیم و مشکلاتش بنویسم.اول باید بگم که من توی یه شرکت خصوصی کار می کنم که کارش مشاوره، طراحی، ساخت و راه اندازی پروژه های الکترونیکی و برقی هستش، در واقع از موسسین شرکت هستم و انشااله در مورد راه اندازی شرکت هم می گم که چطور شد که شروع کردیم، شاید بتونه حداقل به چند نفر تو تصمیم گیری هاشون کمک کنه.از اونجایی که چند سالی میشه تو زمینه زنبورداری چند تا دستگاه ساختیم و معرفی کردیم، یکی از دوستان که باهاش به واسطه کارهامون آشنا شدیم و بعدا رفیق، در حدود یک ماهه قبل باهامون تماس گرفت  و گفت که یه شرکت نیمه خصوصی دنبال یه دستگاه میگرده و از همه کسانی که اون دستگاه رو تو ایران ساختن خواسته که دستگاهشون رو معرفی کنن و یه نمونه براشون بفرستن تا تست کنن. ما تا اون روز تا حدودی درباره اون دستگاه شنیده بودیم ولی چون بازاری براش نبود دنبال ساختش نرفتیم. به هر حال با اون شرکت تماس گرفتیم و گفتیم که ما توانایی ساخت داریم و می تونیم دستگاه رو براشون بسازیم ولی به ما گفتن که &#34;ما تقریبا از یک ماهه قبل فراخوان زدیم و تقریبا همه دستگاه ها رو تست کردیم و هیچکدوم اونی که ما می خواستیم نبوده&#34;، و فقط 4 روز به پایان مهلت مونده بود، ما هم دور هم جمع شدیم تا تصمیم گیری کنیم که چیکار کنیم، می تونیم بسازیم یا نه، اونم فقط تو چند روز! آخرش تصمیم گرفتیم که انجامش بدیم و تماس گرفتیم و از اونا که از دستگاه های ایرانی مایوس بودن و دنبال راه حل دستگاه خارجی، خواهش کردیم که تا پایان 4 روز صبر کنن و اجازه بدن که ما هم دستگاهمون رو ارائه بدیم.فوری تقسیم کار کردیم من بخش نرم افزار و الکترونیک پروژه رو به عهده گرفتم و بقیه بچه ها رفتن سراغ بخش خارجی (این دستگاه دو تا قسمت داشت، یه کنترل و یه قسمت که در تعامل با زنبور بود)، خلاصه تو این چند روز کل اینترنت رو برای نمونه های مشابه و راهنمایی زیرو رو کردیم (البته فقط سایت های خارجی تو ایرانیها چیز زیادی گیر نمیاد)، ولی اونجا هم چیز زیادی گیرمون نیومد، همش یه اطلاعات سطحی بود چون کسی نمیاد همه چیزو مفت در اختیارت بزاره. با همون اطلاعات کم شروع کردیم و تا لحظه آخر کار کردیم و نمونه اولیه رو آماده و با هماهنگی با همون دوستمون تست کردیم و تو چند ساعت آخر دستگاه نمونه رو ارسال کردیم. کاری که تو حالت معمول باید حداقل 1 ماه طول می کشید تو 3 روز آماده کردیم.فردای روز ارسال قرار به تست دستگاه نمونه و ارسال جواب بود، باهامون تماس گرفتن و گفتن که نتایج عالی بوده و جز چندتا مورد جزیی مشکلی نبوده. از این بهتر چی می تونست باشه؟ :) 3 روز به صورت فشرده کار کردیم و مشکلات و اعصاب خوردی ها و دردسر های ساخت، کمبود و نبود قطعات و امکانات ولی ما تونستیم، خدا هم همیشه هوامونو داشته ولی ما هم همیشه تلاش کردیم و سعی کردیم مایوس نشیم! خلاصه اینکه من از این انشا نتیجه می گیرم سعی کنید و باز هم سعی کنید و باز هم سعی کنید و باز هم ... بالاخره نتیجه میده، چاره ای جز نتیجه دادن نداره مگه دست خودشه!!!اولین بارم هست که می نویسم، انشاله اگه قسمت شد بازم بنویسم سعی می کنم بهتر از این باشهبا تشکر</description><category>Mohsen Mahmoudjanlou</category><author>Mohsen Mahmoudjanlou</author><pubDate>Thu, 20 Sep 2018 18:58:39 +0430</pubDate></item></channel></rss>