- برای سفارشی سازی یا تهیه اسکریپت، در قسمتهای 4 و 5 این سری به تفصیل بحث شده.
EF Code First #1
- برای سفارشی سازی یا تهیه اسکریپت، در قسمتهای 4 و 5 این سری به تفصیل بحث شده.
افزونه Settings Sync برای ذخیره و بازیابی تنظیمات سفارشی کاربر در ویژوال استدیو کد (vs code)
این افزونه اطلاعات تنظیمات سفارشی شما در ویژوال استدیو کد که در برخی موارد میتواند اطلاعات امنیتی باشد مانند اطلاعات ورود به sql server برای افزونه mssql را در یک فایل secret gist ذخیره میکند و تنها کافیست در گیت هاب حساب کاربری داشته باشید و یک توکن معتبر برای ساخت این فایل gist را بسازید و در اختیار این افزونه قرار دهید.
using System; using System.Collections.Generic; namespace GenericApplication { public class MyGenericArray<T> { // تعریف یک آرایه از نوع جنریک private T[] array; public MyGenericArray(int size) { array = new T[size + 1]; } // بدست آوردن یک آیتم جنریک از آرایه جنریک public T getItem(int index) { return array[index]; } // افزودن یک آیتم جنریک به آرایه جنریک public void setItem(int index, T value) { array[index] = value; } } }
class Tester { static void Main(string[] args) { // تعریف یک آرایه از نوع عدد صحیح MyGenericArray<int> intArray = new MyGenericArray<int>(5); // افزودن اعداد صحیح به آرایه ای از نوع عدد صحیح for (int c = 0; c < 5; c++) { intArray.setItem(c, c*5); } // بدست آوردن آیتمهای آرایه ای از نوع عدد صحیح for (int c = 0; c < 5; c++) { Console.Write(intArray.getItem(c) + " "); } Console.WriteLine(); // تعریف یک آرایه از نوع کاراکتر MyGenericArray<char> charArray = new MyGenericArray<char>(5); // افزودن کاراکترها به آرایه ای از نوع کاراکتر for (int c = 0; c < 5; c++) { charArray.setItem(c, (char)(c+97)); } // بدست آوردن آیتمهای آرایه ای از نوع کاراکتر for (int c = 0; c< 5; c++) { Console.Write(charArray.getItem(c) + " "); } Console.WriteLine(); Console.ReadKey(); } }
0 5 10 15 20 a b c d e
<Project> <PropertyGroup> <BlazorMode>Client</BlazorMode> <DefineConstants Condition=" '$(BlazorMode)' == 'Client' ">$(DefineConstants);BlazorClient</DefineConstants> <DefineConstants Condition=" '$(BlazorMode)' == 'Server' ">$(DefineConstants);BlazorServer</DefineConstants> <LangVersion>8.0</LangVersion> </PropertyGroup> </Project>
#if BlazorClient ... #elif BlazorServer ... #endif
dotnet publish -o "c:\dir1\dir2" -c Release
<PropertyGroup> <PublishIISAssets>true</PublishIISAssets> </PropertyGroup>
<SuppressTrimAnalysisWarnings>false</SuppressTrimAnalysisWarnings>
<BlazorEnableTimeZoneSupport>false</BlazorEnableTimeZoneSupport>
<InvariantGlobalization>true</InvariantGlobalization>
قابل ذکر است که هر سه package manager معروف npm، bower و Nuget در ویژوال استدیو 2015 به صورت توکار موجود هستند.جزیات بیشتر در مستندات مایکروسافت
Install-Package Bower
مشاهده میکنید که فولدر .bin به پروژهی شما اضافه شده است.
حال درون صفحهی cmd (توجه کنید cmd، نه package manager console) به آدرس پروژه (نه solution) با دستور زیر منتقل شوید:
cd <Project Location>
که به جای project location آدرس فایل پروژه را قرار میدهیم. شکل زیر نمایانگر این مسیر است:
با اجرای دستور زیر bower.json را به پروژه اضافه میکنیم:
bower init
مشاهده میکنید که پس از دستور bower init مواردی که قرار است درون bower قرار گیرد، مقدار دهی میشوند. من مقادیر را به صورت زیر (حالتهای پیش فرض) تکمیل کردم:
حال باید تا اینجای کار یک فایل bower.json برای شما در روت پروژه ساخته شده باشد. حال بیایید اولین اسکریپت رفرنس را به پروژه اضافه نماییم. من قصد دارم تا با دستور زیر JQuery را به پروژه اضافه کنم:
bower install jquery
پکیج JQuery به صورت زیر دانلود میشود و در پوشهی bower_component در روت پروژه قرار میگیرد.
به همین صورت شما میتوانید تمامی نیازمندیهای پروژه را از Git با استفاده از bower package manager دریافت کنید.
namespace jqGrid02.Models { public class Product { public int Id { set; get; } public string Name { set; get; } public decimal Price { set; get; } public Supplier Supplier { set; get; } } public class Supplier { public int Id { set; get; } public string CompanyName { set; get; } public string Address { set; get; } public string PostalCode { set; get; } public string City { set; get; } public string Country { set; get; } public string Phone { set; get; } public string HomePage { set; get; } } }
public ActionResult GetGetSupplierData(int id) { var list = ProductDataSource.LatestProducts; var product = list.FirstOrDefault(x => x.Id == id); if (product == null) return Json(null, JsonRequestBehavior.AllowGet); return Json(new { product.Supplier.CompanyName, product.Supplier.Address, product.Supplier.PostalCode, product.Supplier.City, product.Supplier.Country, product.Supplier.Phone, product.Supplier.HomePage }, JsonRequestBehavior.AllowGet); }
<div dir="rtl" id="supplierDialog"> <span id="CompanyName"></span><br /><br /> <span id="Address"></span><br /> <span id="PostalCode"></span>, <span id="City"></span><br /> <span id="Country"></span><br /><br /> <span id="Phone"></span><br /> <span id="HomePage"></span> </div>
<script type="text/javascript"> function showSupplierDialog(linkElement, supplierId) { //request json data $.getJSON('@Url.Action("GetGetSupplierData","Home")', { id: supplierId }, function (data) { //set values in dialog for (var property in data) { if (data.hasOwnProperty(property)) { $('#' + property).text(data[property]); } } //get link position var linkPosition = $(linkElement).offset(); $('#supplierDialog').dialog('option', 'position', [linkPosition.left, linkPosition.top]); //open dialog $('#supplierDialog').dialog('open'); }); } $(document).ready(function () { $('#supplierDialog').dialog({ autoOpen: false, bgiframe: true, resizable: false, title: 'تولید کننده' }); $('#list').jqGrid({ // .... مانند قبل colNames: ['شماره', 'نام محصول', 'قیمت'], //columns model colModel: [ { name: 'Id', index: 'Id', align: 'right', width: 20, formatter: function (cellvalue, options, rowObject) { var cellValueInt = parseInt(cellvalue); if (cellValueInt == 5) { return "<span style='background: brown; color: yellow'>" + cellvalue + "</span>"; } return cellvalue; } }, { name: 'Name', index: 'Name', align: 'right', width: 300, formatter: function (cellvalue, options, rowObject) { return "<a href='#' onclick='showSupplierDialog(this, " + rowObject[0] + ");'>" + cellvalue + "</a>"; } }, { name: 'Price', index: 'Price', align: 'center', width: 50, formatter: 'currency', formatoptions: { decimalSeparator: '.', thousandsSeparator: ',', decimalPlaces: 2, prefix: '$' } } ], // .... مانند قبل }); }); </script>