اشتراک‌ها
بدست آوردن Absoluter URL آیتم SPListItem یا SPFile در لیست‌ها یا کتابخانه‌های شیرپوینتی
حتماً برای شما هم پیش آمده است که بخواهید از لیست‌های شیرپوینتی بعنوان منبع داده راهکارهای خود استفاده کرده باشید. فرض کنید شما قرار است وب پارتی تهیه نمایید که وظیفه آن نمایش آخرین آیتمهای لیست خاصی از شیرپوینت باشد و در ادامه قصد داشته باشید بر کلیک بر روی هر آیتم بتوانید آن را در صفحه‌ای جداگانه مشاهده نمایید یا از URL آن برای سایر موارد استفاده نمایید (فرض کنید: وب پارت What's New را طراحی کرده‌اید و قرار است کاربر با کلیک بر روی هر خبر بتواند شرح آن خبر را DisplayForm مشاهده نماید پس باید URL هر آیتم را بدست آورید.).
من راههای بسیاری در شیرپوینت دیدم ولی مزیت این روش نسبت به سایر روش‌ها، تمیزی و خوانایی آن است و زحمت زیادی بر دوش توسعه‌دهنده قرار نمی‌دهد.
بدست آوردن Absoluter URL آیتم SPListItem یا SPFile در لیست‌ها یا کتابخانه‌های شیرپوینتی
نظرات مطالب
سفارشی سازی ASP.NET Core Identity - قسمت پنجم - سیاست‌های دسترسی پویا
مدیریت کننده‌ی سیاست دسترسی پویای نمونه‌ی DynamicPermissionsAuthorizationHandler ، بر اساس نتیجه‌ی تصمیم گیری در متد CanUserAccess کار می‌کند. کارکرد این متد را به دلخواه خودتان تغییر دهید. در حال حاضر این متد در نهایت بر اساس مقدار claim انتسابی، یعنی ناحیه/کنترلر/اکشن متد جاری:
var currentClaimValue = $"{area}:{controller}:{action}"
تصمیم گیری می‌کند. به انتهای آن یک hasAccess هم اضافه کنید. مقدار دهی آن‌را به صفحه‌ی لیست کننده‌ی اکشن متدها اضافه کنید و سپس آ‌ن‌را به صورت سفارشی در اینجا استخراج و پردازش کنید.
نظرات مطالب
Blazor 5x - قسمت 18 - کار با فرم‌ها - بخش 6 - حذف اطلاعات
مشکل از اینجا بود (در متد UpdateHotelRoomAsync سرویس HotelRoomService):
// Note: Without this `Include`, HotelRoomImages will be in the detached state and won't be update here.
var actualDbRoom = await _dbContext.HotelRooms.Include(x => x.HotelRoomImages)
                                           .FirstOrDefaultAsync(x => x.Id == roomId);
نمونه‌ای که منتشر شده، بدون این Include است. به همین جهت اگر لیست تصاویر به روز رسانی شوند، چون این تصاویر بارگذاری نشده‌اند و تحت کنترل سیستم tracking نیستند، به روز رسانی نخواهند شد.
نظرات مطالب
ساده سازی تعریف فضاهای نام در C# 10.0
یک نکته‌ی تکمیلی: وادار کردن خود به استفاده‌ی یک‌دست از این قابلیت در سراسر Solution

می‌توان با تنظیم فایل editorconfig. که در کنار فایل sln. قرار دارد، زیر تمام فضاهای نام پیشین، یک خط اخطار جهت ارتقاء به روش جدید کشید. برای اینکار تنها کافی است تنظیم زیر را به آن اضافه کنید:
[*.cs]

csharp_style_namespace_declarations = file_scoped:warning

و همچنین اگر می‌خواهید پس از این تغییر، تمام فایل‌ها را یکجا به روز رسانی کنید، در NET 6.، برنامه‌ی dotnet-format، جزء استاندارد SDK است. به همین جهت در همان ریشه‌ی sln.، دستور زیر را صادر کنید:
dotnet format
البته اگر فقط می‌خواهید لیست تغییراتی را که صورت می‌گیرند مشاهده کنید، دستور زیر را صادر کنید:
dotnet format --verify-no-changes
نظرات مطالب
Blazor 5x - قسمت 27 - برنامه‌ی Blazor WASM - کار با سرویس‌های Web API
چه خطایی دریافت کردید؟ در مرورگر دکمه‌ی F12 را فشار دهید تا developer tools آن باز شود. سپس در برگه‌ی console آن، لیست خطاها ذکر می‌شوند و یا در برگه‌ی network هم یکسری از درخواست‌ها با رنگ قرمز مشخص می‌شوند. اگر بر روی هر کدام دوبار کلیک کنید، جزئیات آن‌ها نمایش داده خواهند شد و یا اگر در همینجا response را هم مشاهده کنید، ممکن است به همراه خروجی خطای سمت سرور هم باشد. به علاوه اگر برنامه را از طریق دستور dotnet run اجرا می‌کنید، کنسول باز شده، خطاهای سمت سرور را لاگ می‌کند و یا اگر از ادیتور خاصی استفاده می‌کنید، خطاهای مرتبط در برگه‌ی debug آن‌ها ظاهر می‌شوند.
نظرات مطالب
ایجاد ویژگی‌های اعتبارسنجی سفارشی در ASP.NET Core 3.1 به همراه اعتبارسنجی سمت کلاینت آن‌ها
ممنون بابت مطلب ارزشمندتون
به عنوان یک نکته تکمیلی:
کتابخانه  FoolProof.Core (مخزن آن) Attribute‌های زیادی برای بحث اعتبار سنجی دارد که همگی علاوه بر Server-side از Client-side Validation هم پشتیبانی میکنن. نسخه قدیمی آن (foolproof) برای ASP.NET MVC سابق است (قبلا مقاله آموزش آن در سایت ثبت شده)  ولی این نسخه از ASP.NET Core پیشتیبانی میکنه
لیست Attribute های پشتیبانی شده:
  • Is
  • EqualTo
  • NotEqualTo
  • GreaterThan
  • LessThan
  • GreaterThanOrEqualTo
  • LessThanOrEqualTo
  • Improved required validators:
  • RequiredIf
  • RequiredIfNot
  • RequiredIfTrue
  • RequiredIfFalse
  • RequiredIfEmpty
  • RequiredIfNotEmpty
  • RequiredIfRegExMatch
  • RequiredIfNotRegExMatch
  • In
  • NotIn 
نظرات مطالب
React 16x - قسمت 33 - React Hooks - بخش 4 - useContext Hook
- بله. ()React-Redux connect دقیقا در پشت صحنه از همین Context API استفاده می‌کند. تفاوت این دو مانند مقایسه‌ی صرفا داشتن یک API ابتدایی (Context API) و داشتن یک کتابخانه‌ی غنی بنا شده‌ی بر اساس یک API هست (React-Redux) .
+ یک هوک دیگر به نام useReducer Hook هم به لیست هوک‌های استاندارد React اضافه شده که که در حقیقت زیرساخت useState است و کارش فراهم آوردن مدیریت حالت پیشرفته‌ای مخصوص یک کامپوننت است. البته جایگزین Redux که سراسری عمل می‌کند نیست.
برای مطالعه‌ی بیشتر: Redux vs. The React Context API 
نظرات مطالب
راه اندازی StimulSoft Report در ASP.NET MVC
سلام؛ بنده یک لیست تو در تو دارم؛ مثلا چندتا گروه دارم هر گروه چندتا آیتم داره:
[
   {
      "day" : "۱۳۹۸/۱۰/۲۵",
      "plan" : "موردی",
      "rId" : 1,
      "records" : [
         {
            "help" : "بسته غذایی",
            "rId" : 1
         },
         {
            "help" : "کمک مالی",
            "rId" : 1
         }
      ]
   },
   {
      "day" : "۱۳۹۸/۱۰/۱۶",
      "plan" : "مادرانه",
      "rId" : 1002,
      "records" : [
         {
            "help" : "بسته غذایی",
            "rId" : 1002
         },
         {
            "help" : "تدریس",
            "rId" : 1002
         }
      ]
   }
]
ممنون میشم راهنماییم کنید چطور پیاده سازیش کنم.
نظرات مطالب
اعمال کنترل دسترسی پویا در پروژه‌های ASP.NET Core با استفاده از AuthorizationPolicyProvider سفارشی
جهت اطلاع
به عنوان راهکاری جهت کاهش حجم کوکی/توکن احراز هویت، امکان PackedPermission اضافه شد.
سوال: بدون نگهداری لیست دسترسی‌های پویای کاربر در کوکی/توکن، بازهم امکان استفاده از این زیرساخت را خواهیم داشت؟
بله؛ اگر قصد استفاده از مکانیزم PackedPermission را ندارید، با بازطراحی انجام شده و به دلیل عدم فراخوانی context.Fail()‎ در هندلر پیش فرض، امکان پیاده سازی AuthorizationHandler متناظر با PermissionAuthorizationRequriment را خواهید داشت که می‎تواند مستقیم از بانک اطلاعاتی نیز بررسی دسترسی به منابع مورد نظر را انجام دهد.

claims.Add(new Claim(UserClaimTypes.PackedPermission,
    new[] {"48", "65", "6C", "6C", "6F", "20", "57", "6F", "72", "6C", "64", "21"}
        .PackPermissionsToString()));

نظرات مطالب
امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x - قسمت دوم - ایجاد ساختار اولیه‌ی مثال این سری
- مثالی که در GitHub هست، در حقیقت آخرین نگارش موجود یا حاصل نهایی کل این سری است. بنابراین برای راه اندازی آن نیاز است قسمت آخر و تنظیم مجوز ssl آن‌را رعایت کنید تا بتوانید آن‌را اجرا کنید. خصوصا قسمت «تنظیم مجوز امضای توکن‌های IDP » آن + مطلب «اجبار به استفاده‌ی از HTTPS در حین توسعه‌ی برنامه‌های ASP.NET Core 2.1» را هم باید پیگیری کنید. نیاز هست مجوز SSL آزمایشی ASP.NET Core را به «Trusted Root Certification Authorities/Certificates» منتقل کنید که در آن مطلب توضیح داده شده‌است.  
- یا مراجعه کنید به لیست commits آن و در اینجا هر مرحله را جداگانه دریافت و اجرا کنید. هر کامیت متناظر با یک قسمت است.