نظرات مطالب
صفحه بندی و مرتب سازی خودکار اطلاعات به کمک jqGrid در ASP.NET MVC
جهت اطلاع
«تغییر نام و همچنین مجوز استفاده از jqGrid»  
- به عبارتی تا نگارش 4.6 آن رایگان است و نه پس از آن.
- به همین جهت از نگارش 4.6 آن یک fork جدید ایجاد شده در اینجا
نظرات مطالب
BloggerToCHM
به روز رسانی‌
نگارش 1.1
- ارتقاء به نگارش جدید open search api مورد استفاده گوگل
دریافت:
http://vahid.nasiri.googlepages.com/BloggerToCHM_1.1_setup.exe
نظرات مطالب
نرمال سازی اطلاعات کاربران در حین ثبت نام
نکته‌ای در مورد طراحی دیتابیس ASP.NET Core Identity
به جدول کاربران نگارش سوم ASP.NET Identity، دو فیلد NormalizedEmail و NormalizedUserName هم اضافه شده‌اند:

که الگوریتم پیش فرض نرمال سازی آن‌ها که فقط to upper case است، قابلیت سفارشی سازی هم دارد (برای مثال جهت اعمال نکات مطلب فوق).
علت وجود این فیلدهای اضافی سه مورد است:
- الف) کاربران پس از ویرایش ایمیل‌های خود، متوجه نرمالسازی نشوند. چون اصل ایمیل در فیلد Email ذخیره می‌شود.
- ب) با نرمال سازی بتوان جلوی مشکلات مطرح شده‌ی در مطلب جاری را گرفت و از ثبت چندین ایمیل یکسان و یا نام کاربری یکسان جلوگیری کرد.
- ج) برنامه نویس دیگر نیازی  ندارد تا توابع نرمالسازی را همواره به صورت دستی، در حین ویرایش اطلاعات کاربران اعمال کند. اکنون این نرمالسازی به صورت خودکار از سرویس ILookupNormalizer دریافت و اعمال می‌شود.
نظرات مطالب
ارتقاء به ASP.NET Core 1.0 - قسمت 13 - معرفی View Components
ارتقاء به ASP.NET Core 1.1
روش معرفی پیشین View Components
@await Component.InvokeAsync("SiteCopyright", new { numberToTake = 5 })
در مقایسه با Tag Helpers ارائه شده در ASP.NET Core، آنچنان زیبا نیست و با کل مجموعه ناهماهنگ به نظر می‌رسد. به همین جهت در نگارش 1.1، امکان درج و تعریف View Components را به صورت Tag Helpers مهیا کرده‌اند:
<vc:site-copyright number-to-take="5"></vc:site-copyright>
که در اینجا تعریف یک ViewComponent با vc شروع می‌شود و سپس نام آن به صورت «کبابی» باید درج شود (Kebab Case)؛ همچنین پارامترهای مرتبط نیز به همین نحو. در روش معرفی «کبابی»، هرجایی که یک حرف، به صورت بزرگ درج شده‌است، یک - قرار می‌گیرد (شبیه به سیخ کباب!).
همچنین برای فعال سازی :vc نیاز است به فایل ViewImports.cshtml_ مراجعه کرده و اسمبلی جاری را که vc در آن قرار دارد، معرفی کرد:
@addTagHelper *,Core1RtmEmptyTest
پس از این تعریف، vcهای اسمبلی معرفی شده، قابلیت تعریف به صورت Tag Helper را خواهند داشت.
نظرات مطالب
صفحه بندی و مرتب سازی خودکار اطلاعات به کمک jqGrid در ASP.NET MVC
خطای زیر رو ایجاد کرده در کلاس داخلی JqGridRequestModelBinder مربوط به کتابخانه Lib.AspNetCore.Mvc.JqGrid
برای همین چون نمی‌تواند Binding مدل را به درستی انجام دهد exception داخلی ایجاد می‌کرده و مدل سازی ورودی متد به درستی انجام نمیشده.
به نظرتون برای رفع این مشکل راه حلی هست؟ یا باید منتظر باشیم تا نسخه‌های بعدی ASP.NET Core ؟

Could not load type 'Microsoft.AspNetCore.Mvc.ModelBinding.Internal.ModelBindingHelper' 
from assembly 'Microsoft.AspNetCore.Mvc.Core, Version=3.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.

نظرات مطالب
سفارشی سازی ASP.NET Core Identity - قسمت چهارم - User Claims
- جائیکه قرار است Roles یا Claims با هم «And» شوند از روش متداول استفاده کنید:
options.AddPolicy("ElevatedRights", 
   policyBuilder => policyBuilder.RequireRole("Administrator", "PowerUser", "BackupAdministrator"));
حتی ذکر زنجیروار این‌ها هم یعنی «And»:
policyBuilder => policyBuilder
    .RequireClaim("VIPNumber")
    .RequireClaim("EmployeeNumber")
    .RequireRole("CEO"));
- جائیکه قرار است «Or» شوند یا از RequireAssertion هنگام تعریف یک Policy جدید استفاده کنید:
services.AddAuthorization(options =>
{
    options.AddPolicy(
        "CanAccessVIPArea",
        policyBuilder => policyBuilder.RequireAssertion(
            context => context.User.HasClaim(claim => 
                           claim.Type == "VIPNumber" 
                           || claim.Type == "EmployeeNumber")
                        || context.User.IsInRole("CEO"))
        );
});
- و یا برای حالت‌های پیچیده‌تر، AuthorizationHandler ای را که در قسمت بعدی توضیح داده شده، پیاده سازی کنید.
نظرات مطالب
ساخت Nuget Manager شخصی
دستور ترکیبی get-package درنسخه بعدی nuget احتمالا 5 حذف خواهد شد و جایگزین آن Find-Package خواهد شد به شکل ساده ذیل
PM> Find-Package DNTCaptcha

Id                                  Versions                                 Description                                                                                                                       
--                                  --------                                 -----------                                                                                                                       
DNTCaptcha.Core                     {1.6.0}                                  DNTCaptcha.Core is a captcha generator and validator for ASP.NET Core applications.                                               
Abp.AspNetCore.NRCaptcha            {1.0.0}                                  通过 DNTCaptcha.Core 进行改写的...                                                                                                       
Time Elapsed: 00:00:00.3478514

نظرات مطالب
ASP.NET MVC #12
- Viewها در ASP.NET MVC پس از اولین بار فراخوانی، کامپایل می‌شوند. البته می‌شود با دستکاری فایل پروژه، آن‌ها را در زمان build هم کامپایل کرد. در قسمت‌های قبل توضیح دادم. بنابراین سربار این مساله بسیار کم است.
- شاید برای مواردی مانند تکست باکس، لینک و امثال آن، آنچنان تفاوتی در این بین نباشد که از اصل آن‌ها استفاده شود، یا یک متد کمکی. اما مثلا در مورد رندر کردن یک گرید پویا بر اساس پارامترهای انتخابی یک گزارش چطور؟ هدف اصلی، بیشتر این نوع موارد است.
- مباحث caching اطلاعات را هم در قسمت‌های بعدی به آن اشاره کردم. این مورد سبب می‌شود تا اصلا کدی در سمت سرور اجرا نشود. البته در مورد بایدها و نبایدهای آن هم بحث شده در همان مطلب.
نظرات مطالب
وضعیت فناوری‌های مرتبط با دات نت از دیدگاه مرگ و زندگی!
اسکات هنسلمن در یک فیلمی که در مورد MVC صحبت می‌کند، MVC را به موتور سیکلت و WebForms را به یک ماشین ون تشبیه می‌کند. این تشنیه به علت وجود خصایص کامپوزیتی در WebForms است که تشبیه بسیار خوبیست.

MVC خیلی خوب است اما برای مثال شما در آن نمی‌توانید یک کامپوننت ایجاد کرده و به راحتی در پروژه‌های بعدی استفاده کنید بدون اینکه به کدتان دست بزنید. (فقط از یک بُعد به کامپوننت نگاه نکنید. مثلا نه فقط بر پایه jQuery و این قبیل و یا فقط کد و ...)
این می‌تواند نقطه ضعف بزرگی باشد. به نظر من ASP.NET عقب افتاده است اما MVC نمی‌تواند جایگذین 100% آن باشد. چیز دیگری باید به وجود آید ولی آن MVC نیست. البته باید این را هم در نظر گرفت که شاید سیاستمداران مایکروسافت به این فکر کرده‌اند که وقتی با PHP وب سایت‌های معتبری را راه می‌اندازند چه نیازی به کامپوننت گرایی و ...؟!

البته اگر از حق نگذریم وب محیطی متفاوت است و رفتار با آن مانند محیط‌های دیگر، به هر حال باعث بروز سرباره می‌شود.