‫۳ سال و ۸ ماه قبل، دوشنبه ۸ دی ۱۳۹۹، ساعت ۱۳:۴۷
روش عدم ارسال فرم در صورت شکست اعتبارسنجی:
<script type="text/javascript">        
        $(document).ready(function () { 
            $("form").submit(function () {
                $(this).validate();
                if (!$(this).valid()) {
                    console.log("validation error");
                    //note: here return false will stop the submit
                    return false;  
                }                             
            });
        });
</script>
‫۳ سال و ۸ ماه قبل، پنجشنبه ۴ دی ۱۳۹۹، ساعت ۱۵:۵۰
- Task.Factory.StartNew و یا نمونه‌ی جدید آن یعنی Task.Run، نباید در اکشن متدهای MVC حضور داشته باشند. چون هر اکشن متد، در یک ترد جداگانه اجرا می‌شود و متدهای یاد شده هم یک ترد مجزای دیگر را ایجاد می‌کنند. بنابراین با اینکار، قابلیت پاسخ‌دهی برنامه را به نصف کاهش می‌دهید (نیاز به یک ترد برای اجرای اکشن متد + یک ترد برای اجرای Task.Run). هدف اصلی از اعمال async، عدم استفاده از یک ترد جدید است و آزاد سازی ترد جاری تا قدرت پاسخ‌دهی برنامه افزایش یابد. همچنین اجرای یک Task، در تردی دیگر، دسترسی آن‌را به HttpContext قطع می‌کند که با اعمال async واقعی، چنین مشکلی وجود ندارد و همه چیز طبیعی به نظر می‌رسد.
- روش ارسال Taskهای Async به یک متد به این صورت است: « یک نکته‌ی تکمیلی: امضای نگارش‌های Task دار و Async این متدها» 
+ اگر هدفتان لاگ کردن خطاها است، در MVC استفاده از روش‌های کار با filterها، قابلیت انجام چنین کاری را بدون تکرار کد، میسر می‌کنند.
‫۳ سال و ۸ ماه قبل، پنجشنبه ۴ دی ۱۳۹۹، ساعت ۱۵:۲۰
- شاید جالب باشد بدانید که EF-Core با دانت 4x هم قابل استفاده‌است. البته تا EF Core 3x بر اساس NET Standard 2.0. کامپایل شده و با دات نت 4x سازگاری دارد. اما EF Core 5x بر اساس NET Standard 2.1. کامپایل شده و با دات نت 4x دیگر سازگار نیست.
- با توجه به اینکه عملیات انجام شده در سطح کلاینت انجام می‌شود، می‌توان معادل آن‌را با AutoMapper هم انجام داد.
- و یا می‌توان با استفاده از change tracker این تغییرات را اعمال کرد.
‫۳ سال و ۸ ماه قبل، چهارشنبه ۳ دی ۱۳۹۹، ساعت ۰۲:۰۲
- اگر این کتابخانه برای شما مفید نیست؛ از آن استفاده نکنید. ما راه حل دیگری نداریم. جای دیگری هم چیزی دیگری پیدا نمی‌کنید که در اساس با این راه حل متفاوت باشد.
- هدف از await را بهتر است در دوره‌ای که معرفی کردم (مبانی Async در C# 5) مطالعه کنید؛ چون به نظر آشنایی با آن ندارید. وجود آن نه مشکلی است و نه ربطی به قفل کردن UI دارد. البته اگر به نحو نادرستی مورد استفاده قرار گیرد، می‌تواند باعث قفل شدن UI هم شود که در آن سری با مثال بررسی شده.
- جائیکه HttpContext وجود ندارد، از آن استفاده نکنید. قالب رشته‌ای نهایی را به نحو دیگری تولید کنید.
- در این سایت برای تک ایمیل‌ها، از روش استفاده از سرویس‌های ارسال ایمیلی مانند مطلب جاری استفاده می‌شود (مانند ایمیلی که هم اکنون جهت اطلاع رسانی دریافت پاسخی به شما ارسال شد). برای ایمیل‌های با تعداد بالا از کتابخانه‌ی «DNT Scheduler» استفاده می‌شود که نسخه‌ی Core هم دارد. در Taskهایی که در اینجا تعریف می‌شوند، از بانک اطلاعاتی کوئری بگیرید و پارامترها را از آن‌ها استخراج کنید (در زمان‌هایی مشخص کوئری می‌گیرید که آیا زمان ارسال ایمیل هست یا خیر؟ اگر بله اطلاعات بیشتر را از بانک اطلاعاتی دریافت و استفاده کنید). از این لحاظ محدودیتی ندارد. مطلب «انجام کارهای پس‌زمینه» هم که عنوان شد نمونه‌ی دیگری از این نوع پیاده سازی‌ها است؛ جهت آشنایی بیشتر.
‫۳ سال و ۹ ماه قبل، پنجشنبه ۲۰ آذر ۱۳۹۹، ساعت ۱۲:۱۰
یک نکته‌ی تکمیلی
مایکروسافت توصیه کرده که از روش قرار دادن اطلاعات دیباگ در بسته‌ی نیوگت نهایی استفاده کنید:
<!-- Embed source files that are not tracked by the source control manager in the PDB -->
<EmbedUntrackedSources>true</EmbedUntrackedSources>

<!-- Recommended: Embed symbols containing Source Link in the main file (exe/dll) -->
<DebugType>embedded</DebugType>