‫۶ سال و ۷ ماه قبل، پنجشنبه ۱۹ بهمن ۱۳۹۶، ساعت ۰۳:۳۱
این this.User دقیقا پس از اولین درخواست رسیده‌ی بعدی، با خواندن کوکی تنظیم شده‌ی توسط عملیات لاگین، به صورت خودکار مقدار دهی می‌شود؛ نه پیش از آن (این نحوه‌ی طراحی سیستم Identity است؛ نگارش 2x آن هم به همین صورت است). درست چند سطر بعد از عملیات لاگین، هنوز این کوکی تنظیم شده، مجددا خوانده نشده‌است (چون هنوز درخواست فعلی تکمیل نشده و درخواست جدیدی ارسال نشده‌است). بنابراین دراینجا در صورت نیاز، فقط باید بر اساس مقادیر دریافتی از کاربر، از بانک اطلاعاتی جهت یافتن اطلاعات تکمیلی او کوئری گرفت.
‫۶ سال و ۷ ماه قبل، چهارشنبه ۱۸ بهمن ۱۳۹۶، ساعت ۰۰:۳۶
Angular؟
ضمن اینکه اگر با پشت صحنه‌ی جاوا اسکریپتی این کتابخانه‌ها کار کنید، نیازی به wrapper ندارید. پشتیبانی نمی‌کند، معنا نخواهد داشت. این مورد دقیقا مطلبی هست که چندین سال قبل در نظرات این مطلب ذکر شده. این سری تهیه شده در سایت هم صرفا بر اساس این پشت صحنه‌ی جاوا اسکریپتی هست و نه هیچ wrapper خاصی. به همین جهت تمام مثال‌های آن به سادگی و تمام و کمال به ASP.NET Core منتقل شدند.
‫۶ سال و ۷ ماه قبل، یکشنبه ۱۵ بهمن ۱۳۹۶، ساعت ۲۲:۵۴
let alphas = ["1","2","3","4"] ;

// method 1 - using splice
const index = alphas.findIndex(item=>item == "3"); // or use indexOf("3")
if (index !== -1) {
        alphas.splice(index, 1); // array.splice(start, deleteCount)
}        

// method 2 - using filter
let newAlphas = alphas.filter(item => item !=="3");
‫۶ سال و ۷ ماه قبل، یکشنبه ۱۵ بهمن ۱۳۹۶، ساعت ۱۷:۲۳
ارتقاء به ASP.NET Core 2.1

اگر Controller شما صرفا کار Web API را انجام می‌دهد، می‌توانید آن‌را به ویژگی جدید ApiController مزین کنید:
[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
پس از این تغییر، این ویژگی‌ها را به صورت خودکار و بدون کد نویسی اضافه‌تری دریافت خواهید کرد:
الف) دیگر نیازی نیست تا ModelState.IsValid را بررسی کنید و در صورت معتبر نبودن آن برای مثال BadRequest(ModelState) را بازگشت دهید. این‌کار به صورت خودکار، در صورت بروز شکست اعتبارسنجی، انجام خواهد شد.
ب) دیگر نیازی به ذکر صریح ویژگی‌های FromBody ،FromRoute و FromQuery برای model binding به پارامترهای یک اکشن متد ندارید و در این زمینه به صورت هوشمند‌تری عمل می‌شود.

البته باید دقت داشت که این ویژگی تنها با attribute routing کار می‌کند و نه حالت convention-based routes.
یک نمونه از خطای cyclic dependency در مطلب  «احراز هویت و اعتبارسنجی کاربران در برنامه‌های Angular - قسمت ششم - کار با منابع محافظت شده‌ی سمت سرور» بحث شده‌است. ابتدا باید «private http: HttpClient» را از سازنده‌ی کلاس حذف کنید، سپس:
- یک راه حل آن، تزریق «private injector: Injector» است و دریافت وهله‌ی سرویس به صورت (HttpClient)this.injector.get.
- راه حل دوم، دریافت وابستگی مورد نیاز از طریق یک پارامتر (و نه توسط تزریق وابستگی‌ها در سازنده‌ی کلاس):
loadClientConfig(httpClient: HttpClient): Promise<any> {
و سپس دریافت آن به این صورت:
    {
      provide: APP_INITIALIZER,
      useFactory: (config: AppConfigService, httpClient: HttpClient) => () => config.loadClientConfig(httpClient),
      deps: [AppConfigService, HttpClient],
      multi: true
    },
مثال‌های بیشتر در اینجا
یک نکته‌ی تکمیلی: ساده سازی فعالسازی گزینه‌های مختلف کامپایلر TypeScript

پس از به روز رسانی کامپایلر تایپ‌اسکریپت با دستور npm install -g typescript، اگر دستور tsc --init را در یک پوشه‌ی جدید اجرا کنید، سبب تولید یک فایل tsconfig.json از پیش تنظیم شده، بر اساس آخرین قابلیت‌های کامپایلر TypeScript می‌شود. برای مثال تنظیمات ذیل قسمتی از تنظیمات نگارش 2.7.1 است و برای نمونه strictPropertyInitialization به آن اضافه شده‌است:
    /* Strict Type-Checking Options */
    "strict": true,                           /* Enable all strict type-checking options. */
    // "noImplicitAny": true,                 /* Raise error on expressions and declarations with an implied 'any' type. */
    // "strictNullChecks": true,              /* Enable strict null checks. */
    // "strictFunctionTypes": true,           /* Enable strict checking of function types. */
    // "strictPropertyInitialization": true,  /* Enable strict checking of property initialization in classes. */
    // "noImplicitThis": true,                /* Raise error on 'this' expressions with an implied 'any' type. */
    // "alwaysStrict": true,                  /* Parse in strict mode and emit "use strict" for each source file. */

    /* Additional Checks */
    // "noUnusedLocals": true,                /* Report errors on unused locals. */
    // "noUnusedParameters": true,            /* Report errors on unused parameters. */
    // "noImplicitReturns": true,             /* Report error when not all code paths in function return a value. */
    // "noFallthroughCasesInSwitch": true,    /* Report errors for fallthrough cases in switch statement. */
اگر می‌خواهید به ازای هر به روز رسانی کامپایلر تایپ‌اسکریپت این تنظیمات را تغییر ندهید، فقط کافی است تنظیم strict": true" را قید کنید و مابقی را تنها در صورت نیاز به false کردن آن‌ها ذکر نمائید.