برای نمایش فقط خواندنی یک متن HTML از Html.Raw استفاده کنید؛ مانند نمایش متن یک مقاله در یک سایت.
سلام
چرا موقع نمایش برای من به جای نام ماه undefined را نمایش میدهد و با زدن کلید چپ و راست درست میشه ؟
چرا موقع نمایش برای من به جای نام ماه undefined را نمایش میدهد و با زدن کلید چپ و راست درست میشه ؟
نظرات مطالب
افزونه جملات قصار jQuery
من بعید میدونم کسی یک روز تمام مرورگر خودش را صرفا جهت نمایش سایت شما باز نگه دارد. بنابراین تنظیم بازههای زمانی نمایش، کفایت میکند.
وقتی این دستور رو اجرا میکنم پیغام زیر نمایش داده میشه
System.Security.SecureString
و محتوای رشته نمایش داده نمیشه
در مستندات خود مایکروسافت نیز پیکیج WebOptimizer معرفی شده و با توجه به اینکه asp.net core به صورت native مبحث bundling و minification را پوشش نمیدهد، بهترین گزینه همین بسته میباشد. اما چند نکته در این بسته وجود داره:
- وقتی شما از تنظیمات پیش فرض (بدون اعمال هیچ کانفیگی) استفاده کنید، تمام فایلهای استاتیکی که در صفحه در خواست شده را minify خواهد کرد.
برای مثال دو فایل bootstrap.min.css و index.css را در یک صفحه رفرنس داده اید. در هر ریکوئست (اگر تنظیمات را اعمال نکرده باشید) تمامی فایلها را minify خواهد کرد که این امر سبب کاهش مدت زمان بارگذاری صفحه و خطا در نمایش و چیدمان خواهد شد.
اما میتوانید یک مسیر را به صورت سراسری مشخص کنید و تعدادی فایل دیگر را هم مشخص کنید تا فایلهای از پیش minify شده را نیز به اشتباه فشرده سازی نکند.
برای مثال میتوان گفت فقط تمام فایلهای مسیر wwwroot/myJsFiles را فشرده سازی کن و در این صورت کاری به فولدر wwwroot/myLibraries نخواهد داشت. یا فقط فایلهای b.js، a.js و c.js فشرده شوند.
برای مثال دو فایل bootstrap.min.css و index.css را در یک صفحه رفرنس داده اید. در هر ریکوئست (اگر تنظیمات را اعمال نکرده باشید) تمامی فایلها را minify خواهد کرد که این امر سبب کاهش مدت زمان بارگذاری صفحه و خطا در نمایش و چیدمان خواهد شد.
اما میتوانید یک مسیر را به صورت سراسری مشخص کنید و تعدادی فایل دیگر را هم مشخص کنید تا فایلهای از پیش minify شده را نیز به اشتباه فشرده سازی نکند.
برای مثال میتوان گفت فقط تمام فایلهای مسیر wwwroot/myJsFiles را فشرده سازی کن و در این صورت کاری به فولدر wwwroot/myLibraries نخواهد داشت. یا فقط فایلهای b.js، a.js و c.js فشرده شوند.
- minify در زمان runtime: هر بار که ریکوئست به یک فایل استاتیک ارسال شود، این پکیج در همان لحظه عملیات minify را شروع خواهد کرد.
(در بارگذاری اولیه و قبل از cache مرورگر) البته که اگر نکته اول را رعایت کرده باشید، پرفرمنس را نه تنها کاهش میدهد، بلکه باعث افزایش هم میشود. ولی قطعا در حالتی که از قبل فایلها minify شده باشند، پرفرمنس بیشتر خواهد بود.
(در بارگذاری اولیه و قبل از cache مرورگر) البته که اگر نکته اول را رعایت کرده باشید، پرفرمنس را نه تنها کاهش میدهد، بلکه باعث افزایش هم میشود. ولی قطعا در حالتی که از قبل فایلها minify شده باشند، پرفرمنس بیشتر خواهد بود.
- متاسفانه این پکیج فشرده سازی html را ندارد و نمونه خوبی در حد این بسته را پیدا نکردم.
یک نکتهی تکمیلی: تغییرات در فایل angular-cli.json نیاز به راه اندازی مجدد watchers را دارد
فرض کنید برنامه را توسط دستورات ng build --watch و یا ng serve -o تهیه و یا اجرا کردهاید. در این حال، برای مثال جهت افزودن مجموعه آیکنهای قلم font-awesome به صورت زیر عمل کردهاید:
و سپس تعریف css آنرا نیز به قسمت styles فایل angular-cli.json افزودهاید:
اکنون اگر برنامه مجددا به صورت خودکار build شود، فونتها و آیکنها را مشاهده نخواهید کرد. علت اینجا است که دستورات یاد شده که در حالت watch اجرا میشوند، تنها به تغییرات پوشهی src واکنش نشان میدهند و تغییرات فایل angular-cli.json از دید آنها مخفی است.
به همین جهت باید یکبار آنها را بسته و مجددا از ابتدا اجرا کنید تا اینبار قلم آیکن font-awesome اعمال شده و قابل نمایش شود.
فرض کنید برنامه را توسط دستورات ng build --watch و یا ng serve -o تهیه و یا اجرا کردهاید. در این حال، برای مثال جهت افزودن مجموعه آیکنهای قلم font-awesome به صورت زیر عمل کردهاید:
npm install font-awesome --save
"styles": [ "../node_modules/bootstrap/dist/css/bootstrap.css", "../node_modules/font-awesome/css/font-awesome.css", "styles.css" ],
به همین جهت باید یکبار آنها را بسته و مجددا از ابتدا اجرا کنید تا اینبار قلم آیکن font-awesome اعمال شده و قابل نمایش شود.
نظرات مطالب
آناتومی یک گزارش خطای خوب
یک نکتهی تکمیلی: چگونه پرسشهای مطرح شدهی در GitHub را بر اساس قالب خاصی درخواست کنیم؟
تصور اینکه تمام پرسش کنندگان در حین طرح سؤالی، نکات مطلب جاری را رعایت کنند، بیهوده است. به همین جهت میتوان با ارائهی قالبهایی از پیش تعیین شده، آنها را مقید به پر کردن جاهای خالی کنیم. برای این منظور در GitHub
- در صفحهی اول پروژه، بر روی دکمهی ایجاد یک فایل جدید کلیک کنید:
- سپس نام فایل را دقیقا معادل github/issue_template.md. وارد کنید (این نام ویژه توسط GitHub شناسایی میشود).
- در ادامه محتوای آنرا به چیزی مانند متن ذیل تنظیم تنظیم کنید:
- در پایان، بر روی دکمهی ذخیرهی فایل جدید کلیک کنید.
اکنون با کلیک بر روی دکمهی new issue، این قالب از پیش تعیین شده جهت تکمیل جاهای خالی آن نمایش داده میشود و میتواند راهنمایی برای پرسش کنندگان باشد.
تصور اینکه تمام پرسش کنندگان در حین طرح سؤالی، نکات مطلب جاری را رعایت کنند، بیهوده است. به همین جهت میتوان با ارائهی قالبهایی از پیش تعیین شده، آنها را مقید به پر کردن جاهای خالی کنیم. برای این منظور در GitHub
- در صفحهی اول پروژه، بر روی دکمهی ایجاد یک فایل جدید کلیک کنید:
- سپس نام فایل را دقیقا معادل github/issue_template.md. وارد کنید (این نام ویژه توسط GitHub شناسایی میشود).
- در ادامه محتوای آنرا به چیزی مانند متن ذیل تنظیم تنظیم کنید:
# Summary of the issue ## Environment ``` The in-use version: Operating system: IDE: (e.g. Visual Studio 2015) ``` ## Example code/Steps to reproduce: ``` paste your core code ``` ## Output: ``` Exception message: Full Stack trace: ```
اکنون با کلیک بر روی دکمهی new issue، این قالب از پیش تعیین شده جهت تکمیل جاهای خالی آن نمایش داده میشود و میتواند راهنمایی برای پرسش کنندگان باشد.
- در قسمت «ایجاد ساختار اولیهی برنامهی Angular CLI در داخل پروژهی جاری» در متن جاری توضیح داده شدهاست.
+ فقط پروژههای قدیمی و بدون پشتیبانی MVC 5 هستند که فایلهای جدید اضافه نشدهی به فایل csproj را به solution در IDE اضافه نمیکنند. چنین مشکلی با پروژههای جدید ASP.NET Core وجود ندارد و دقیقا مانند VSCode رفتار میکنند. یعنی هر فایلی که توسط Angular CLI اضافه شد، به صورت خودکار در IDE نمایش داده میشود (بدون نیاز به ذکر ارجاعی به آنها در فایل csproj). بنابراین یا از VSCode استفاده کنید، یا هربار در پروژههای با ساختار قدیمی MVC 5 باید این فایلهای جدید تولید شده را به فایل csproj به صورت دستی اضافه کنید (اگر میخواهید آنها را داخل VS ویرایش کنید).
- این مطلب را هم مدنظر داشته باشید:
«چه زمانی باید به فکر ارتقاء به ASP.NET Core بود؟»
+ فقط پروژههای قدیمی و بدون پشتیبانی MVC 5 هستند که فایلهای جدید اضافه نشدهی به فایل csproj را به solution در IDE اضافه نمیکنند. چنین مشکلی با پروژههای جدید ASP.NET Core وجود ندارد و دقیقا مانند VSCode رفتار میکنند. یعنی هر فایلی که توسط Angular CLI اضافه شد، به صورت خودکار در IDE نمایش داده میشود (بدون نیاز به ذکر ارجاعی به آنها در فایل csproj). بنابراین یا از VSCode استفاده کنید، یا هربار در پروژههای با ساختار قدیمی MVC 5 باید این فایلهای جدید تولید شده را به فایل csproj به صورت دستی اضافه کنید (اگر میخواهید آنها را داخل VS ویرایش کنید).
- این مطلب را هم مدنظر داشته باشید:
«چه زمانی باید به فکر ارتقاء به ASP.NET Core بود؟»
If you’re starting a new project and plan on using MVC and/or Web API, then it’s almost certain you should use ASP.NET Core.
روشهای زیادی برای انجام این کار وجود دارد:
1- در فایل پروژه (Your-MVC-Project.csproj) مقدار تگ MvcBuildViews را به true تغییر دهید.
2- استفاده از RazorGenerator
3- اگر Resharper نصب شده است، روشن کردن Solution-wide analysis (گوشهی پایین سمت راست ویژوال استودیو) همهی خطاهای پروژه از جمله خطاهای موجود در ویوها را نمایش خواهد داد.
4- و روشهای دیگر ...
اشکال روش اول، در طولانی شدن زمان کامپایل است و در روش دوم باید از یک کتابخانه جانبی برای این کار استفاده کنیم (اگر صرفا بخواهیم فقط از این قابلیت استفاده کنیم) و روش سوم را هم خودتان میتوانید حدس بزنید! (مصرف بیش از حد منابع سیستم)
یک راه سادهتر این است که از روش اول فقط در زمانیکه پروژه در حالت Release قرار دارد، استفاده کنیم. در این صورت ویوها در حالت Debug کامپایل نمیشوند و برای کامپایل باید به حالت Release سوئیچ کنیم.
برای این کار مراحل زیر را انجام دهید:
1- کلیک راست بر روی پروژه و انتخاب Unload Project.
2- کلیک راست بر روی پروژه و انتخاب Edit Your-MVC-Project.csproj.
3- پیدا کردن تگ <MvcBuildViews>...</MvcBuildViews> و حذف آن.
4- افزودن کدهای زیر به فایل:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU'"> <MvcBuildViews>true</MvcBuildViews> </PropertyGroup>
به این صورت:
5- ذخیرهی فایل، راست کلیک بر روی پروژه و انتخاب Reload Project.
اکنون پروژهی خود را در حالت Release قرار داده و Build کنید!
در مورد «درست کردن فایل راهنمای CHM از توضیحات XML یک پروژه» پیشتر مطلبی در این سایت منتشر شده است. تمام اینها هم خوب! اما فایل راهنمای نهایی تولیدی یک ایراد مهم دارد. Sandcastle Help File Builder نیاز دارد که به ازای هر فضای نامی که در پروژهی شما وجود دارد، یک summary و توضیح هم ارائه شود؛ در غیر اینصورت خطای قرمز رنگ زیر را در ابتدای صفحه معرفی کلاسهای یک فضای نام، نمایش خواهند داد:
[Missing <summary> documentation for "N:Some.Test"]
از آنطرف کامپایلرهای مورد استفاده چنین توضیحاتی را قبول ندارند و نمیتوان برای فضاهای نام، توضیحاتی را همانند کلاسها یا متدها، ارائه داد. برای حل این مشکل، یک راه حل ساده وجود دارد: به ازای هر فضای نامی که در پروژه وجود دارد، یک کلاس خالی را به نام "NamespaceDoc" به پروژه اضافه کنید. مثلا:
namespace Some.Test
{
/// <summary>
/// The <see cref="Some.Test"/> namespace contains classes for ....
/// </summary>
[System.Runtime.CompilerServices.CompilerGenerated]
class NamespaceDoc
{
}
}
به این ترتیب توضیحاتی که ملاحظه میکنید توسط Sandcastle Help File Builder مورد استفاده قرار خواهد گرفت و آن اخطارهای قرمز رنگ عدم وجود توضیحات مرتبط با فضاهای نام، از فایل تولیدی نهایی حذف خواهند شد.
روش دوم:
در خود برنامه Sandcastle Help File Builder، در قسمت Project Properties > Comments > NameSpaceSummaries، امکان وارد کردن توضیحات فضاهای نام نیز وجود دارد. (که آنچنان جالب نیست؛ بهتر است همه چیز یکپارچه باشد.)