اشتراک‌ها
مجموعه ای روان برای یادگیری AngularCLI
https://github.com/Vintharas/angular2-step-by-step-01-your-first-component
https://github.com/Vintharas/angular2-step-by-step-02-refactoring-to-services
https://github.com/Vintharas/angular2-step-by-step-03-your-second-component-and-data-bindings
https://github.com/Vintharas/angular2-step-by-step-04-routing
https://github.com/Vintharas/angular2-step-by-step-05-forms-and-validation
https://github.com/Vintharas/angular2-step-by-step-06-consuming-real-data-with-http
مجموعه ای روان برای یادگیری AngularCLI
نظرات مطالب
ارتقاء به ASP.NET Core 2.0 - معرفی بسته‌ی Microsoft.AspNetCore.All
ارتقاء به ASP.NET Core 3.0 و سرنوشت metapackageهای Microsoft.AspNetCore

پس از نصب SDK جدید، اگر دستور dotnet new mvc را صادر کنید، فایل csproj تولید شده‌ی آن تنها دارای TargetFramework ای معادل netcoreapp3.0 است و نه هیچ مورد دیگری:
<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
  </ItemGroup>
</Project>
بنابراین برای ارتقاء پروژه‌های قبلی به نگارش 3 آن:
- ابتدا TargetFramework را به netcoreapp3.0 تنظیم کنید.
- سپس تمام PackageReferenceهایی را که به بسته‌های Microsoft.AspNetCore.All و یا Microsoft.AspNetCore.App اشاره می‌کنند، حذف کنید.
- ارجاع به بسته‌ی Microsoft.AspNetCore.Razor.Design را نیز حذف کنید.
- اگر پیشتر خاصیت AspNetCoreHostingModel را به حالت درون پروسه‌ای تنظیم کرده‌اید، آن‌را حذف کنید؛ چون حالت پیش‌فرض نگارش 3 است.
- حذف شدن JSON.NET را مدنظر داشته باشید.
- تغییرات حالت ثبت سرویس‌های MVC و Razor Pages و Web API را مدنظر داشته باشید.
- مسیریابی آن نیز Endpoint routing شده‌است.
- نقطه‌ی آغازین آن نیز بازنویسی شده‌است.
نظرات مطالب
راه اندازی StimulSoft Report در ASP.NET MVC
سلام؛ من از این روش برای پیاده سازی خودم و تهیه گزارش استفاده کردم، اما وقتی View من فراخونی میشه هیچ یکی از متدهای GetReportSnapshot و یا ViewerEvent  و یا PrintReport فراخوانی نمی‌شن و در عوض خود متد فراخواننده View گزارش فراخوانی میشه. به عبارت بهتر وقتی من متد گزارش رو به آدرس
 http://localhost:14425/tableproduct/printtable?reporttype=21
فراخوانی میکنم این آدرس یک بار فراخوانی شده و سپس View فراخوانی می‌شود و View درخواستی به شکل زیر را به سرور می‌دهد :
/tableproduct/PrintTable?reporttype=21&mvcviewer_resource=scripts&mvcviewer_id=MVCViewer1&mvcviewer_theme=Office2013&mvcviewer_loc=
fi9Db250ZW50L1N0aW11bHNvZnQvTG9jYWxpemF0aW9uL2ZhLnhtbA%3d%3d&mvcviewer_version=2015.2 
به نظر شما دلیل این مشکل چی میتونه باشه؟ نتیجه بررسی‌های خودم نشون میده احتمالا مشکل از CustomRoute من هستش. پروژه ای که من دارم گزارش رو توی اون ایجاد میکنم از ساختار Routing پروژه Iris  استفاده میکنه.
نظرات مطالب
API Versioning
در روش هایی که اشاره کردید مدیریت ورژن‌ها در داخل یک نسخه از برنامه انجام شده. که در این حالت هر دو ورژن رو از طریق یک ریلیز ارائه میکنید که در هر صورت امکان مختل شدن هر کدوم وجود داره. یعنی برای اصلاح نسخه1، نسخه2 هم مجدد پابلیش می‌شود.

 نظرتون نسب به ریلیزهای جداگانه برای هر ورژن چیه؟ مثلا در یک وبسایت IIS برای هر ورژن یک Virtual Directory ایجاد کرد و هر نسخه از API رو بروی همون پابلیش کرد. برای دسترسی تغییر هر نسخه هم از امکانات source control استفاده کرد. یعنی به کامیتی که ورژن1 در اون پابلیش شده بریم و بعد از انجام تغییرات اون رو بروی Virtual Directory خودش پابلیش کنیم. برای ورژن‌های دیگه هم به همین شکل.
البته در این حالت از روش Url-based استفاده میشه. ولی میشه از یک ابزار دیگه در این بین استفاده کرد که عملیات Routing به یک ورژن خاص رو برای حالت‌های header-based و media type-based هم انجام بده.
نظرات مطالب
UrlRewriter توسط Intelligencia.UrlRewriter
من می‌خوام علاوه بر اینکه وقتی به یه صفحه جدید میرم آدرس عوض بشه، توی همون صفحه هم با ایجاد تغییراتی آدرس صفحه ام عوض بشه. مثلا وقتی کاربر سرچ می‌کنه صفحه تغییر نمی‌کنه و نتایج سرچ توی همون صفحه نشون داده میشه اما می‌خوام آدرس عوض بشه. به این صورت که عبارت سرچ شده توی آدرس بیاد. یا مثلا وقتی از داخل دراپ دان لیست یک ویژگی خاص محصول انتخاب میشه (که اینم به نوعی سرچ هست) اون ویژگی توی آدرس همون صفحه نشون داده بشه.
برای این کار از کدوم روش استفاده کنم بهتر و راحت تره؟ url rewriting, url routing, url friendly ؟
اگه یک راهنمایی هم در مورد اینکه چطور باید این کار رو انجام بدم بکنید ممنون میشم. یعنی وقتی صفحه عوض نمیشه من این تغییر رو دقیقا کجا باید اعمال کنم؟
نظرات مطالب
نحوه استفاده از افزونه Firebug برای دیباگ برنامه‌های ASP.NET مبتنی بر jQuery
با تشکر از مطلب بسیار کاربردیتون ، در هنگام استفاده از URL Routing همانطور که قبلا راهنماییم کرده بودید   برای آدرس فایل‌های جاوا اسکریپت از
<%=ResolveUrl("~/App_Themes/MainTheme/jquery.js")%>
استفاده کردم و مشکل حل شد ولی برای یو آر ال این تصاویر آیکون که در Jquery تعریف شدند میتونید کمکم کنید
<script type="text/javascript">
    $(document).ready(function () {

        $('#exampleMenu').sweetMenu({
            top: 200,
            padding: 8,
            iconSize: 48,
            easing: 'easeOutBounce',
            duration: 500,
            icons: [
'images/home.png',
'images/comments.png',
'images/red_heart.png',
'images/computer.png',
'images/male_user.png',
'images/yellow_mail.png'
]
        });
    });
</script>

اگر آدرس آیکون‌ها را به صورت 

'http://site.ir/images/home.png' 

تعریف کنم مشکل حل میشه ولی فکر کنم راه حل درستی نباشه . بسیار ممنون

بازخوردهای پروژه‌ها
خطا هنگام اجرا در IIS/7.5 کلیه آدرس ها نیاز به دریافت پارامتر ارسالی دارند
با سلام و تشکر از برنامه خوبتون
بنده برنامه رو بروی هاست آپلود کردم و مشکل از آنجا شروع شد که نه خطایی دریافت می‌شه و نه برنامه اجرا می‌شود و بطور اتفاقی متوجه شدم که تنها صفحه ای که لود می‌شود User/logon?returnurl=/admin
که بعد از آن با قرار دادن پارامتر در انتهای هر لینک یا آدرس برنامه به درستی کار کرد (http://blob.com/?blob)و مشخص شد مشکل از routeconfig برنامه می‌باشد که متاسفانه به دلیل حطا ندادن برنامه و اجرا شدن آن در محیط لوکال بدون ایراد راه حل مناسبی پیدانشد
            routes.MapRouteLowercase("Default", "{controller}/{action}/{id}", new
            {
                area = "",
                controller = "Home",
                action = "Index",
                id = UrlParameter.Optional,
            }, new[] { "Iris.Web.Controllers" }
                );
routing سایت را مجبور به دریافت پارامتر نموده./
نظرات مطالب
از سرگیری مجدد، لغو درخواست و سعی مجدد دریافت فایل‌های حجیم توسط HttpClient
- بحث جاری مطلقا ارتباطی به Angular ندارد. HttpClient آن بحث دات نتی هست و نه Angular ای.
- در سمت سرور «یک نکته‌ی تکمیلی: پشتیبانی توکار ASP.NET Core 2.0 از Range headers» فوق را با تنظیم پارامتر enableRangeProcessing: true انجام دهید، کافی است و هیچ تغییر دیگری را نیاز ندارد (همان مثال‌های قسمت آخر آن ...به علاوه تمام متدهای بازگشت فایل، پارامتر enableRangeProcessing را نیز به همراه دارند... ).
- در مورد نمایش درصد پیشرفت دانلود و یا آپلود فایل‌ها در برنامه‌های Angular بدون نیاز به کامپوننت جانبی؛ که بدون آن، کاربر باید تا آخرین لحظه‌ی دریافت و یا آپلود بایت‌ها، بدون نمایش گزارشی، صبر کند و شاید اینطور تصور کند که دریافت و یا آپلود یکجا و یکباره بوده‌است: «یک نکته‌ی تکمیلی: به روز رسانی مثال مطلب جاری جهت گزارش درصد پیشرفت آپلود فایل‌ها توسط HTTP Client جدید Angular»
نظرات مطالب
بررسی قابلیت Endpoint Routing در ASP.NET Core
ارتقاء به ASP.NET Core 3.0: دریافت مقادیر Routing پس از فعالسازی Endpoint routing

تا پیش از معرفی Endpoint routing، اطلاعات مسیریابی جاری را می‌شد از طریق یکی از روش‌های زیر به دست آورد:
  // services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
    private readonly IActionContextAccessor _actionContext;

public MyClass(IActionContextAccessor actionContext)
    {
        _actionContext = actionContext;
    }

    public string GetData()
    {
        var routes = _actionContext.ActionContext.RouteData;
        var val = routes.Values["action"]?.ToString() as string;
        return val;
    }
در اینجا سرویس IActionContextAccessor امکان دسترسی به Context اکشن متد در حال اجرا را در قسمت‌های مختلف برنامه میسر می‌کرد و یا شبیه به آن در یک AuthorizationHandler سفارشی، context آن از نوع AuthorizationFilterContext بود که آن نیز دسترسی به اطلاعات context اکشن متد در حال اجرا را در اختیار برنامه قرار می‌داد:
protected override async Task HandleRequirementAsync(
   AuthorizationHandlerContext context,
   DynamicPermissionRequirement requirement)
{
    if (!(context.Resource is AuthorizationFilterContext mvcContext))
    {
      return;
    }

    var actionDescriptor = mvcContext.ActionDescriptor;
    actionDescriptor.RouteValues.TryGetValue("area", out var areaName);
    var area = string.IsNullOrWhiteSpace(areaName) ? string.Empty : areaName;
این روش‌ها دیگر در ASP.NET Core 3.0 کار نمی‌کنند. در اینجا پس از تزریق IHttpContextAccessor به سازنده‌ی کلاس مدنظر، می‌توان توسط متد الحاقی ()HttpContext.GetRouteData به اطلاعات مسیریابی دسترسی داشت:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Routing;

namespace ASPNETCoreIdentitySample.Services.Identity
{
    public class DynamicPermissionsAuthorizationHandler : AuthorizationHandler<DynamicPermissionRequirement>
    {
        private readonly IHttpContextAccessor _httpContextAccessor;

        public DynamicPermissionsAuthorizationHandler(IHttpContextAccessor httpContextAccessor)
        {
            _httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor));
        }

        protected override async Task HandleRequirementAsync(
             AuthorizationHandlerContext context,
             DynamicPermissionRequirement requirement)
        {
            var routeData = _httpContextAccessor.HttpContext.GetRouteData();

            var areaName = routeData?.Values["area"]?.ToString();
            var area = string.IsNullOrWhiteSpace(areaName) ? string.Empty : areaName;
نظرات مطالب
شروع به کار با AngularJS 2.0 و TypeScript - قسمت دوازدهم - توزیع برنامه
یک نکته‌ی تکمیلی

روش توصیه‌ی شده‌ی توسط تیم AngularJS 2.0، جهت توزیع برنامه‌ها به این صورت است:
 1) ابتدا برنامه‌ی جدید angular-cli را نصب کنید: (بدیهی است پیش از آن باید وابستگی‌های Nodejs بر روی سیستم شما نصب باشند)
npm install -g angular-cli
 2) با دستور ذیل، یک برنامه‌ی جدید AngularJS 2.0 را به همراه تمام وابستگی‌های آن، می‌توانید آغاز کنید:
ng new AngularCLIDemoApp
ابتدا به پوشه‌ی مدنظر وارد شده و سپس در خط فرمان، دستور فوق را وارد کنید. به این ترتیب ساختار یک برنامه‌ی جدید AngularJS 2.0 را خواهید داشت.
 3) اکنون اگر دستور ذیل را صادر کنید:
 ng build -prod
به صورت خودکار، کار بسته بندی و توزیع نهایی برنامه، در پوشه‌ای به نام dist، انجام خواهد شد.

دو مطلب تکمیلی
Angular CLI is here for AngularJS 2  
Angular 2 CLI – Build Angular 2 apps using Command Line Interface