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
ارتقاء به ASP.NET Core 3.0 و سرنوشت metapackageهای Microsoft.AspNetCore
پس از نصب SDK جدید، اگر دستور dotnet new mvc را صادر کنید، فایل csproj تولید شدهی آن تنها دارای TargetFramework ای معادل netcoreapp3.0 است و نه هیچ مورد دیگری:
بنابراین برای ارتقاء پروژههای قبلی به نگارش 3 آن:
- ابتدا TargetFramework را به netcoreapp3.0 تنظیم کنید.
- سپس تمام PackageReferenceهایی را که به بستههای Microsoft.AspNetCore.All و یا Microsoft.AspNetCore.App اشاره میکنند، حذف کنید.
- ارجاع به بستهی Microsoft.AspNetCore.Razor.Design را نیز حذف کنید.
- اگر پیشتر خاصیت AspNetCoreHostingModel را به حالت درون پروسهای تنظیم کردهاید، آنرا حذف کنید؛ چون حالت پیشفرض نگارش 3 است.
- حذف شدن JSON.NET را مدنظر داشته باشید.
- تغییرات حالت ثبت سرویسهای MVC و Razor Pages و Web API را مدنظر داشته باشید.
پس از نصب SDK جدید، اگر دستور dotnet new mvc را صادر کنید، فایل csproj تولید شدهی آن تنها دارای TargetFramework ای معادل netcoreapp3.0 است و نه هیچ مورد دیگری:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp3.0</TargetFramework> </PropertyGroup> <ItemGroup> </ItemGroup> </Project>
- ابتدا 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 گزارش فراخوانی میشه. به عبارت بهتر وقتی من متد گزارش رو به آدرس
فراخوانی میکنم این آدرس یک بار فراخوانی شده و سپس View فراخوانی میشود و View درخواستی به شکل زیر را به سرور میدهد :
http://localhost:14425/tableproduct/printtable?reporttype=21
/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 ؟
اگه یک راهنمایی هم در مورد اینکه چطور باید این کار رو انجام بدم بکنید ممنون میشم. یعنی وقتی صفحه عوض نمیشه من این تغییر رو دقیقا کجا باید اعمال کنم؟
با تشکر از مطلب بسیار کاربردیتون ، در هنگام استفاده از URL Routing همانطور که قبلا راهنماییم کرده بودید برای آدرس فایلهای جاوا اسکریپت از
استفاده کردم و مشکل حل شد ولی برای یو آر ال این تصاویر آیکون که در Jquery تعریف شدند میتونید کمکم کنید
<%=ResolveUrl("~/App_Themes/MainTheme/jquery.js")%>
<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 برنامه میباشد که متاسفانه به دلیل حطا ندادن برنامه و اجرا شدن آن در محیط لوکال بدون ایراد راه حل مناسبی پیدانشد
routing سایت را مجبور به دریافت پارامتر نموده./
بنده برنامه رو بروی هاست آپلود کردم و مشکل از آنجا شروع شد که نه خطایی دریافت میشه و نه برنامه اجرا میشود و بطور اتفاقی متوجه شدم که تنها صفحه ای که لود میشود 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" } );
- بحث جاری مطلقا ارتباطی به Angular ندارد. HttpClient آن بحث دات نتی هست و نه Angular ای.
- در سمت سرور «یک نکتهی تکمیلی: پشتیبانی توکار ASP.NET Core 2.0 از Range headers» فوق را با تنظیم پارامتر enableRangeProcessing: true انجام دهید، کافی است و هیچ تغییر دیگری را نیاز ندارد (همان مثالهای قسمت آخر آن ...به علاوه تمام متدهای بازگشت فایل، پارامتر enableRangeProcessing را نیز به همراه دارند... ).
- در مورد دریافت فایلهای باینری در برنامههای Angular: «دریافت و نمایش تصاویر از سرور در برنامههای Angular» و «نمایش، ذخیره و چاپ فایلهای PDF در برنامههای Angular»
- در مورد نمایش درصد پیشرفت دانلود و یا آپلود فایلها در برنامههای Angular بدون نیاز به کامپوننت جانبی؛ که بدون آن، کاربر باید تا آخرین لحظهی دریافت و یا آپلود بایتها، بدون نمایش گزارشی، صبر کند و شاید اینطور تصور کند که دریافت و یا آپلود یکجا و یکباره بودهاست: «یک نکتهی تکمیلی: به روز رسانی مثال مطلب جاری جهت گزارش درصد پیشرفت آپلود فایلها توسط HTTP Client جدید Angular»
ارتقاء به 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; }
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;
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، جهت توزیع برنامهها به این صورت است:
1) ابتدا برنامهی جدید angular-cli را نصب کنید: (بدیهی است پیش از آن باید وابستگیهای Nodejs بر روی سیستم شما نصب باشند)
2) با دستور ذیل، یک برنامهی جدید AngularJS 2.0 را به همراه تمام وابستگیهای آن، میتوانید آغاز کنید:
ابتدا به پوشهی مدنظر وارد شده و سپس در خط فرمان، دستور فوق را وارد کنید. به این ترتیب ساختار یک برنامهی جدید AngularJS 2.0 را خواهید داشت.
3) اکنون اگر دستور ذیل را صادر کنید:
به صورت خودکار، کار بسته بندی و توزیع نهایی برنامه، در پوشهای به نام dist، انجام خواهد شد.
دو مطلب تکمیلی
Angular CLI is here for AngularJS 2
Angular 2 CLI – Build Angular 2 apps using Command Line Interface
روش توصیهی شدهی توسط تیم AngularJS 2.0، جهت توزیع برنامهها به این صورت است:
1) ابتدا برنامهی جدید angular-cli را نصب کنید: (بدیهی است پیش از آن باید وابستگیهای Nodejs بر روی سیستم شما نصب باشند)
npm install -g angular-cli
ng new AngularCLIDemoApp
3) اکنون اگر دستور ذیل را صادر کنید:
ng build -prod
دو مطلب تکمیلی
Angular CLI is here for AngularJS 2
Angular 2 CLI – Build Angular 2 apps using Command Line Interface