‫۵ سال و ۶ ماه قبل، یکشنبه ۵ اسفند ۱۳۹۷، ساعت ۱۴:۱۰
پیاده سازی  TagHelper سفارشی ImageGravatar  جهت نمایش آواتار کاربر از سایت gravatar 


پیاده سازی کلاس GarvatarTagHelper
[HtmlTargetElement("img-gravatar")]
    public class GravatarTagHelper : TagHelper
    {
        [HtmlAttributeName("email")]
        public string Email { get; set; }

        [HtmlAttributeName("alt")]
        public string Alt { get; set; }

        [HtmlAttributeName("class")]
        public string Class { get; set; }

        [HtmlAttributeName("size")]
        public int Size { get; set; }

        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            if (!string.IsNullOrWhiteSpace(Email))
            {
                var hash = Md5HashHelper.GetHash(Email);

                output.TagName = "img";
                if (!string.IsNullOrWhiteSpace(Class))
                {
                    output.Attributes.Add("class", Class); 
                }

                if (!string.IsNullOrWhiteSpace(Alt))
                {
                    output.Attributes.Add("alt", Alt);
                }
                
                output.Attributes.Add("src", GetAvatarUrl(hash, Size));
                output.TagMode = TagMode.SelfClosing;
            } 
        }

        private static string GetAvatarUrl(string hash, int size)
        {
            var sizeArg = size > 0 ? $"?s={size}" : "";

            return $"https://www.gravatar.com/avatar/{hash}{sizeArg}";
        }
 
استفاده از TagHepler  با مقدار  Email فرد در View مورد نظر
 <img-gravatar email="@Model.Email" class="img-thumbnail" size="150" />

public async Task<IActionResult> Index()
        {
            var httpClient = await _imageGalleryHttpClient.GetHttpClientAsync();
            var response = await httpClient.GetAsync("api/images");
            if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized ||
                response.StatusCode == System.Net.HttpStatusCode.Unauthorized)
            {
                return RedirectToAction("AccessDenied", "Authorization");
            }
            response.EnsureSuccessStatusCode();
  1. پس از دریافت response از سمت Web API، به StatusCode علت برابر بودن دو طرف شرط مقایسه چیست؟  آیا منظور مقدار دیگر بوده؟
  2. امکان اجرای برنامه در IIS Express وجود دارد؟

‫۶ سال قبل، جمعه ۲۳ شهریور ۱۳۹۷، ساعت ۰۰:۱۳
ممنون
پیاده سازی همیچین ویژگی با Action filter‌ها قابل انجام است؟‌
برای مثال اگر برای اکشن خواستی بیش از 50 درخواست در ثانیه بود بشود اطلاعات کلاینت مربوط رو بدست آورد.   
‫۶ سال و ۵ ماه قبل، سه‌شنبه ۲۸ فروردین ۱۳۹۷، ساعت ۲۰:۳۳
پکیج  Scrutor   جهت  اسکن اسمبلی‌ها با قرارداد پیش فرض ( مستندات )  

 services.Scan(scan =>
                scan.FromAssemblyOf<UserRepository>()
                    .AddClasses(classes => classes.InNamespaceOf<UserRepository>())
                    .AsSelf()
                    .WithScopedLifetime());