۷ سال و ۴ ماه قبل، سهشنبه ۲ خرداد ۱۳۹۶، ساعت ۲۱:۴۶
۷ سال و ۴ ماه قبل، سهشنبه ۲ خرداد ۱۳۹۶، ساعت ۱۶:۳۸
این موارد توسط OWIN به صورت خودکار مدیریت میشوند (قسمت «بستههای پیشنیاز برنامه» ابتدای بحث).
۷ سال و ۴ ماه قبل، دوشنبه ۱ خرداد ۱۳۹۶، ساعت ۰۴:۵۴
یک نکتهی تکمیلی
از این کتابخانه برای خواندن فایلهای اکسل هم میتوان استفاده کرد. یک مثال
از این کتابخانه برای خواندن فایلهای اکسل هم میتوان استفاده کرد. یک مثال
۷ سال و ۴ ماه قبل، دوشنبه ۱ خرداد ۱۳۹۶، ساعت ۰۴:۵۱
برای دیباگ فایلهای اکسل از کتابخانهی EPPlus هم میتوانید استفاده کنید:
سطر به سطر و ستون به ستون آنرا به صورت key/value خوانده و نمایش میدهد.
این key/valueها هم از نوع object هستند. بنابراین تبدیل آنها و یا اعتبارسنجی مقادیر آنها را به سادگی میتوانید انجام دهید:
using System; using System.IO; using OfficeOpenXml; namespace ExcelDataReader { class Program { /// <summary> /// PM> Install-Package EPPlus /// </summary> static void Main(string[] args) { var filePath = "sample.xlsx"; var fileInfo = new FileInfo(filePath); if (!fileInfo.Exists) { throw new FileNotFoundException($"{filePath} file not found."); } var worksheetName = "Sheet1"; using (var package = new ExcelPackage(fileInfo)) { var worksheet = package.Workbook.Worksheets[worksheetName]; var startCell = worksheet.Dimension.Start; var endCell = worksheet.Dimension.End; for (var row = startCell.Row; row < endCell.Row + 1; row++) { for (var col = startCell.Column; col <= endCell.Column; col++) { var header = worksheet.Cells[1, col].Value ?? worksheet.Cells[2, col].Value; var name = header?.ToString(); var value = worksheet.Cells[row, col].Value; //var intValue = Convert.ChangeType(value, typeof(int)) as int?; Console.WriteLine($" row[{row}]:col[{col}] -> {name} : {value}"); } Console.WriteLine(); } } } } }
این key/valueها هم از نوع object هستند. بنابراین تبدیل آنها و یا اعتبارسنجی مقادیر آنها را به سادگی میتوانید انجام دهید:
var intValue = Convert.ChangeType(value, typeof(int)) as int?;
۷ سال و ۴ ماه قبل، یکشنبه ۳۱ اردیبهشت ۱۳۹۶، ساعت ۱۹:۴۳
۷ سال و ۴ ماه قبل، یکشنبه ۳۱ اردیبهشت ۱۳۹۶، ساعت ۱۶:۲۹
این مطالب تکمیلی را مطالعه کنید:
- ماژولها در ES 6
- مبانی TypeScript؛ ماژولها
- مسیریابی در Angular - قسمت دهم - Lazy loading
- ماژولها در ES 6
- مبانی TypeScript؛ ماژولها
- مسیریابی در Angular - قسمت دهم - Lazy loading
۷ سال و ۴ ماه قبل، یکشنبه ۳۱ اردیبهشت ۱۳۹۶، ساعت ۱۴:۰۸
دستور dotnet run مطابق مستندات آن وابستهاست به دستور dotnet build. بنابراین با فراخوانی آن نیازی به اجرای صریح دستور dotnet build نیست.
البته اگر وابستگیهای پروژه دریافت نشدهاند (عدم انتخاب گزینهی restore در تصاویر فوق)، با دستور dotnet restore هم میتوان همان کار بازیابی را انجام داد.
The command depends on the dotnet build command to build the code.
۷ سال و ۴ ماه قبل، شنبه ۳۰ اردیبهشت ۱۳۹۶، ساعت ۱۷:۳۹
روش دوم
از کتابخانهی DNTPersianUtils.Core استفاده کنید (با NET 4.x. و همچنین NET Core. سازگار است):
از کتابخانهی DNTPersianUtils.Core استفاده کنید (با NET 4.x. و همچنین NET Core. سازگار است):
"1395/11/3 7:30".ToGregorianDateTime()
۷ سال و ۴ ماه قبل، سهشنبه ۲۶ اردیبهشت ۱۳۹۶، ساعت ۰۰:۵۱
-
برای دیباگ بهتر برنامههای Angular 2 افزونهی Angular Augury را نصب کنید.
- ngIf، کل المان را از HTML نهایی رندر شده حذف میکند یا برعکس؛ اما سبب حذف آن از قالب مخصوصی که تحت کنترل و کامپایل Angular است نمیشود. در اینحالت نه کامپوننت مجددا رندر میشود و نه حلقهی for مجددا اجرا خواهد شد. فقط قسمتی که Angular آنرا مخفی و از HTML نهایی حذف کرده بوده، مجددا به HTML نهایی اضافه میشود.
- ngIf، کل المان را از HTML نهایی رندر شده حذف میکند یا برعکس؛ اما سبب حذف آن از قالب مخصوصی که تحت کنترل و کامپایل Angular است نمیشود. در اینحالت نه کامپوننت مجددا رندر میشود و نه حلقهی for مجددا اجرا خواهد شد. فقط قسمتی که Angular آنرا مخفی و از HTML نهایی حذف کرده بوده، مجددا به HTML نهایی اضافه میشود.
۷ سال و ۴ ماه قبل، دوشنبه ۲۵ اردیبهشت ۱۳۹۶، ساعت ۱۸:۴۴
- «... تاریخ خالی وارد میشه ...»
اگر قرار هست تاریخی خالی وارد شود، باید آنرا nullable تعریف کنید (DateTime? ContractStartDate ) چون DateTime یک value types است و نه یک reference type.
- اگر قرار هست Required داشته باشد (مانند مثال شما)، که همان سمت کلاینت از این مساله جلوگیری میشود و کار به ارسال به سمت سرور نمیرسد؛ چون new RouteValueDictionary(validationAttributes) کار درج ویژگیهای اعتبارسنجی را انجام میدهد. البته به شرطی که UIHint را ذکر کرده باشید.
اگر قرار هست تاریخی خالی وارد شود، باید آنرا nullable تعریف کنید (DateTime? ContractStartDate ) چون DateTime یک value types است و نه یک reference type.
- اگر قرار هست Required داشته باشد (مانند مثال شما)، که همان سمت کلاینت از این مساله جلوگیری میشود و کار به ارسال به سمت سرور نمیرسد؛ چون new RouteValueDictionary(validationAttributes) کار درج ویژگیهای اعتبارسنجی را انجام میدهد. البته به شرطی که UIHint را ذکر کرده باشید.