بله. مراجعه کنید به مطلب «نحوه استفاده از ViewModel در ASP.NET MVC»
نظرات مطالب
using System.Collections.Generic;
using System.Reflection;
using Microsoft.Office.Interop.Outlook;
namespace GAL
{
//add a reference to Microsoft Outlook 12.0 Object Library
class COutLook
{
public struct User
{
public string Name;
public string Email;
}
public static List<User> ExchangeServerEmailAddresses(string userName)
{
List<User> res = new List<User>();
//Create Outlook application
Application outlookApp = new Application();
//Get Mapi NameSpace and Logon
NameSpace ns = outlookApp.GetNamespace("MAPI");
ns.Logon(userName, Missing.Value, false, true);
//Get Global Address List
AddressLists addressLists = ns.AddressLists;
AddressList globalAddressList = addressLists["Global Address List"];
AddressEntries entries = globalAddressList.AddressEntries;
foreach (AddressEntry entry in entries)
{
ExchangeUser user = entry.GetExchangeUser();
if (user != null && user.PrimarySmtpAddress != null && entry.Name != null)
res.Add(new User
{
Name = entry.Name,
Email = user.PrimarySmtpAddress
});
}
ns.Logoff();
// Clean up.
outlookApp = null;
ns = null;
addressLists = null;
globalAddressList = null;
entries = null;
return res;
}
}
}
List<COutLook.User> data = COutLook.ExchangeServerEmailAddresses("nasiri");
foreach (var list in data)
{
//....
}
public class UnicodeFontProvider : FontFactoryImp { static UnicodeFontProvider() { // روش صحیح تعریف فونت var systemRoot = Environment.GetEnvironmentVariable("SystemRoot"); FontFactory.Register(Path.Combine(systemRoot, "fonts\\tahoma.ttf")); // ثبت سایر فونتها در اینجا //FontFactory.Register(Path.Combine(Environment.CurrentDirectory, "fonts\\irsans.ttf")); } public override Font GetFont(string fontname, string encoding, bool embedded, float size, int style, BaseColor color, bool cached) { if (string.IsNullOrWhiteSpace(fontname)) return new Font(Font.FontFamily.UNDEFINED, size, style, color); return FontFactory.GetFont(fontname, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, size, style, color); } }
public class ImageProvider : AbstractImageProvider { public override string GetImageRootPath() { var path = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); return path + "\\"; // مهم است که این مسیر به بک اسلش ختم شود تا درست کار کند } }
public static class XMLWorkerUtils { /// <summary> /// نحوه تعریف یک فایل سی اس اس خارجی /// </summary> public static ICssFile GetCssFile(string filePath) { using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { return XMLWorkerHelper.GetCSS(stream); } } }
/// <summary> /// معادل پی دی افی المانهای اچ تی ام ال را جمع آوری میکند /// </summary> public class ElementsCollector : IElementHandler { private readonly Paragraph _paragraph; public ElementsCollector() { _paragraph = new Paragraph { Alignment = Element.ALIGN_LEFT // سبب میشود تا در حالت راست به چپ از سمت راست صفحه شروع شود }; } /// <summary> /// این پاراگراف حاوی کلیه المانهای متن است /// </summary> public Paragraph Paragraph { get { return _paragraph; } } /// <summary> /// بجای اینکه خود کتابخانه اصلی کار افزودن المانها را به صفحات انجام دهد /// قصد داریم آنها را ابتدا جمع آوری کرده و سپس به صورت راست به چپ به صفحات نهایی اضافه کنیم /// </summary> /// <param name="htmlElement"></param> public void Add(IWritable htmlElement) { var writableElement = htmlElement as WritableElement; if (writableElement == null) return; foreach (var element in writableElement.Elements()) { fixNestedTablesRunDirection(element); _paragraph.Add(element); } } /// <summary> /// نیاز است سلولهای جداول تو در توی پی دی اف نیز راست به چپ شوند /// </summary> private void fixNestedTablesRunDirection(IElement element) { var table = element as PdfPTable; if (table == null) return; table.RunDirection = PdfWriter.RUN_DIRECTION_RTL; foreach (var row in table.Rows) { foreach (var cell in row.GetCells()) { cell.RunDirection = PdfWriter.RUN_DIRECTION_RTL; foreach (var item in cell.CompositeElements) { fixNestedTablesRunDirection(item); } } } } }
using (var pdfDoc = new Document(PageSize.A4)) { var pdfWriter = PdfWriter.GetInstance(pdfDoc, new FileStream("test.pdf", FileMode.Create)); pdfWriter.RgbTransparencyBlending = true; pdfDoc.Open(); var html = @"<span style='color:blue; font-family:tahoma;'><b>آزمایش</b></span> کتابخانه <i>iTextSharp</i> <u>جهت بررسی فارسی نویسی</u> <table style='color:blue; font-family:tahoma;' border='1'><tr><td>eeمتن</td></tr></table> <code>This is a code!</code> <br/> <img src='av-13489.jpg' /> "; var cssResolver = new StyleAttrCSSResolver(); // cssResolver.AddCss(XMLWorkerUtils.GetCssFile(@"c:\path\pdf.css")); cssResolver.AddCss(@"code { padding: 2px 4px; color: #d14; white-space: nowrap; background-color: #f7f7f9; border: 1px solid #e1e1e8; }", "utf-8", true); // کار جمع آوری المانهای ترجمه شده به المانهای پی دی اف را انجام میدهد var elementsHandler = new ElementsCollector(); var htmlContext = new HtmlPipelineContext(new CssAppliersImpl(new UnicodeFontProvider())); htmlContext.SetImageProvider(new ImageProvider()); htmlContext.CharSet(Encoding.UTF8); htmlContext.SetAcceptUnknown(true).AutoBookmark(true).SetTagFactory(Tags.GetHtmlTagProcessorFactory()); var pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new ElementHandlerPipeline(elementsHandler, null))); var worker = new XMLWorker(pipeline, parseHtml: true); var parser = new XMLParser(); parser.AddListener(worker); parser.Parse(new StringReader(html)); // با هندلر سفارشی که تهیه کردیم تمام المانهای اچ تی ام ال به المانهای پی دی اف تبدیل شدند // الان تنها کافی کافی است تا اینها را در یک جدول راست به چپ محصور کنیم تا درست نمایش داده شوند var mainTable = new PdfPTable(1) { WidthPercentage = 100, RunDirection = PdfWriter.RUN_DIRECTION_RTL }; var cell = new PdfPCell { Border = 0, RunDirection = PdfWriter.RUN_DIRECTION_RTL, HorizontalAlignment = Element.ALIGN_LEFT }; cell.AddElement(elementsHandler.Paragraph); mainTable.AddCell(cell); pdfDoc.Add(mainTable); } Process.Start("test.pdf");
public static string GetSignalRContent() { var resolver = new DefaultHubManager(new DefaultDependencyResolver()); var proxy = new DefaultJavaScriptProxyGenerator(resolver, new NullJavaScriptMinifier()); return proxy.GenerateProxy("/signalr"); }
public class CustomVirtualPathProvider : VirtualPathProvider { public CustomActionVirtualPathProvider(VirtualPathProvider virtualPathProvider) { // Wrap an existing virtual path provider VirtualPathProvider = virtualPathProvider; } protected VirtualPathProvider VirtualPathProvider { get; set; } public override string CombineVirtualPaths(string basePath, string relativePath) { return VirtualPathProvider.CombineVirtualPaths(basePath, relativePath); } public override bool DirectoryExists(string virtualDir) { return VirtualPathProvider.DirectoryExists(virtualDir); } public override bool FileExists(string virtualPath) { if (virtualPath == "~/signalr/hubs") { return true; } return VirtualPathProvider.FileExists(virtualPath); } public override CacheDependency GetCacheDependency(string virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart) { // BaseClass can't create a CacheDependency for your content, remove it // You could also add your own CacheDependency and aggregate it with the base dependency List<string> virtualPathDependenciesCopy = virtualPathDependencies.Cast<string>().ToList(); virtualPathDependenciesCopy.Remove("~/signalr/hubs"); return VirtualPathProvider.GetCacheDependency(virtualPath, virtualPathDependenciesCopy, utcStart); } public override string GetCacheKey(string virtualPath) { return VirtualPathProvider.GetCacheKey(virtualPath); } public override VirtualDirectory GetDirectory(string virtualDir) { return VirtualPathProvider.GetDirectory(virtualDir); } public override VirtualFile GetFile(string virtualPath) { if (virtualPath == "~/signalr/hubs") { return new CustomVirtualFile(virtualPath, new MemoryStream(Encoding.Default.GetBytes(GetSignalRContent()))); } return VirtualPathProvider.GetFile(virtualPath); } public override string GetFileHash(string virtualPath, IEnumerable virtualPathDependencies) { return VirtualPathProvider.GetFileHash(virtualPath, virtualPathDependencies); } public override object InitializeLifetimeService() { return VirtualPathProvider.InitializeLifetimeService(); } } public class CustomVirtualFile : VirtualFile { public CustomVirtualFile (string virtualPath, Stream stream) : base(virtualPath) { Stream = stream; } public Stream Stream { get; private set; } public override Stream Open() { return Stream; } }
public override bool FileExists(string virtualPath) { if (virtualPath == "~/signalr/hubs") { return true; } return VirtualPathProvider.FileExists(virtualPath); }
public override CacheDependency GetCacheDependency(string virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart) { List<string> virtualPathDependenciesCopy = virtualPathDependencies.Cast<string>().ToList(); virtualPathDependenciesCopy.Remove("~/signalr/hubs"); return VirtualPathProvider.GetCacheDependency(virtualPath, virtualPathDependenciesCopy, utcStart); }
public override VirtualFile GetFile(string virtualPath) { if (virtualPath == "~/signalr/hubs") { return new CustomVirtualFile(virtualPath, new MemoryStream(Encoding.Default.GetBytes(GetSignalRContent()))); } return VirtualPathProvider.GetFile(virtualPath); }
public static void RegisterBundles(BundleCollection bundles) { BundleTable.VirtualPathProvider = new CustomVirtualPathProvider(BundleTable.VirtualPathProvider); Bundle include = new Bundle("~/bundle") .Include("~/Content/static.js") .Include("~/signalr/hubs"); bundles.Add(include); }
/// Example: "00001.00042.00005".
/// Example: "00001.00042.00006".
public class OrganizationalUnit : TrackableEntity<User>, IHasRowVersion, IPassivable { #region Constants /// <summary> /// Maximum depth of an UO hierarchy. /// </summary> public const int MaxDepth = 16; /// <summary> /// Length of a code unit between dots. /// </summary> public const int PathUnitLength = 5; /// <summary> /// Maximum length of the <see cref="Path"/> property. /// </summary> public const int MaxPathLength = MaxDepth * (PathUnitLength + 1) - 1; public const char HierarchicalDisplayNameSeperator = '»'; #endregion #region Properties public string Name { get; set; } public string NormalizedName { get; set; } public string HierarchicalDisplayName { get; set; } /// <summary> /// Hierarchical Path of this organization unit. /// Example: "00001.00042.00005". /// It's changeable if OU hierarch is changed. /// </summary> public string Path { get; set; } public bool IsActive { get; set; } = true; public byte[] RowVersion { get; set; } #endregion #region Navigation Properties public OrganizationalUnit Parent { get; set; } public long? ParentId { get; set; } public ICollection<OrganizationalUnit> Children { get; set; } = new HashSet<OrganizationalUnit>(); public ICollection<UserOrganizationalUnit> UserOrganizationalUnits { get; set; } = new HashSet<UserOrganizationalUnit>(); #endregion #region Public Methods /// <summary> /// Creates path for given numbers. /// Example: if numbers are 4,2 then returns "00004.00002"; /// </summary> /// <param name="numbers">Numbers</param> public static string CreatePath(params int[] numbers) { if (numbers.IsNullOrEmpty()) { return null; } return numbers.Select(number => number.ToString(new string('0', PathUnitLength))).JoinAsString("."); } /// <summary> /// Appends a child path to a parent path. /// Example: if parentPath = "00001", childPath = "00042" then returns "00001.00042". /// </summary> /// <param name="parentPath">Parent path. Can be null or empty if parent is a root.</param> /// <param name="childPath">Child path.</param> public static string AppendPath(string parentPath, string childPath) { if (childPath.IsNullOrEmpty()) { throw new ArgumentNullException(nameof(childPath), "childPath can not be null or empty."); } if (parentPath.IsNullOrEmpty()) { return childPath; } return parentPath + "." + childPath; } /// <summary> /// Gets relative path to the parent. /// Example: if path = "00019.00055.00001" and parentPath = "00019" then returns "00055.00001". /// </summary> /// <param name="path">The path.</param> /// <param name="parentPath">The parent path.</param> public static string GetRelativePath(string path, string parentPath) { if (path.IsNullOrEmpty()) { throw new ArgumentNullException(nameof(path), "Path can not be null or empty."); } if (parentPath.IsNullOrEmpty()) { return path; } if (path.Length == parentPath.Length) { return null; } return path.Substring(parentPath.Length + 1); } /// <summary> /// Calculates next path for given path. /// Example: if code = "00019.00055.00001" returns "00019.00055.00002". /// </summary> /// <param name="path">The path.</param> public static string CalculateNextPath(string path) { if (path.IsNullOrEmpty()) { throw new ArgumentNullException(nameof(path), "Path can not be null or empty."); } var parentPath = GetParentPath(path); var lastUnitPath = GetLastUnitPath(path); return AppendPath(parentPath, CreatePath(Convert.ToInt32(lastUnitPath) + 1)); } /// <summary> /// Gets the last unit path. /// Example: if path = "00019.00055.00001" returns "00001". /// </summary> /// <param name="path">The path.</param> public static string GetLastUnitPath(string path) { if (path.IsNullOrEmpty()) { throw new ArgumentNullException(nameof(path), "Path can not be null or empty."); } var splittedPath = path.Split('.'); return splittedPath[splittedPath.Length - 1]; } /// <summary> /// Gets parent path. /// Example: if path = "00019.00055.00001" returns "00019.00055". /// </summary> /// <param name="path">The path.</param> public static string GetParentPath(string path) { if (path.IsNullOrEmpty()) { throw new ArgumentNullException(nameof(path), "Path can not be null or empty."); } var splittedPath = path.Split('.'); if (splittedPath.Length == 1) { return null; } return splittedPath.Take(splittedPath.Length - 1).JoinAsString("."); } #endregion }
البته یک ویو نمایشی برای حالت درختی هم بهتر است داشته باشید.
یکسری متد DomainService
public virtual async Task<string> GetNextChildPathAsync(long? parentId) { var lastChild = await GetLastChildOrNullAsync(parentId).ConfigureAwait(false); if (lastChild == null) { var parentPath = parentId != null ? await GetPathAsync(parentId.Value).ConfigureAwait(false) : null; return OrganizationalUnit.AppendPath(parentPath, OrganizationalUnit.CreatePath(1)); } return OrganizationalUnit.CalculateNextPath(lastChild.Path); } public async Task<string> GetNextChildHierarchicalDisplayNameAsync(string name, long? parentId) { var parent = parentId != null ? await _organizationalUnits.SingleOrDefaultAsync(a => a.Id == parentId.Value).ConfigureAwait(false) : null; return parent == null ? name : $"{parent.HierarchicalDisplayName} {OrganizationalUnit.HierarchicalDisplayNameSeperator} {name}"; } public virtual async Task<OrganizationalUnit> GetLastChildOrNullAsync(long? parentId) { return await _organizationalUnits.OrderByDescending(c => c.Path) .FirstOrDefaultAsync(ou => ou.ParentId == parentId).ConfigureAwait(false); } public virtual async Task<string> GetPathAsync(long id) { Guard.ArgumentNotZero(id, nameof(id)); var organizationalUnit = await _organizationalUnits.SingleOrDefaultAsync(ou => ou.Id == id).ConfigureAwait(false); if (organizationalUnit == null) { throw new KeyNotFoundException(); } return organizationalUnit.Path; } public async Task<List<OrganizationalUnit>> FindChildrenAsync(long? parentId, bool recursive = false) { if (!recursive) { return await _organizationalUnits.Where(ou => ou.ParentId == parentId).ToListAsync().ConfigureAwait(false); } if (!parentId.HasValue) { return await _organizationalUnits.ToListAsync().ConfigureAwait(false); } var path = await GetPathAsync(parentId.Value).ConfigureAwait(false); return await _organizationalUnits.Where( ou => ou.Path.StartsWith(path) && ou.Id != parentId.Value).ToListAsync().ConfigureAwait(false); } public virtual async Task MoveAsync(long id, long? parentId) { Guard.ArgumentNotZero(id, nameof(id)); var organizationalUnit = await _organizationalUnits.SingleOrDefaultAsync(ou => ou.Id == id).ConfigureAwait(false); if (organizationalUnit == null || organizationalUnit.ParentId == parentId) { return; } //Should find children before Path change var children = await FindChildrenAsync(id, true).ConfigureAwait(false); //Store old Path of OU var oldPath = organizationalUnit.Path; //Move OU organizationalUnit.Path = await GetNextChildPathAsync(parentId).ConfigureAwait(false); organizationalUnit.ParentId = parentId; //Update Children Paths foreach (var child in children) { child.Path = OrganizationalUnit.AppendPath(organizationalUnit.Path, OrganizationalUnit.GetRelativePath(child.Path, oldPath)); } }
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); FluentValidationModelValidatorProvider.Configure(); }
[Validator(typeof(PersonValidator))] public class Person { public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } public int Age { get; set; } } public class PersonValidator : AbstractValidator<Person> { public PersonValidator() { RuleFor(x => x.Id).NotNull(); RuleFor(x => x.Name).Length(0, 10); RuleFor(x => x.Email).EmailAddress(); RuleFor(x => x.Age).InclusiveBetween(18, 60); } }
public class PeopleController : Controller { public ActionResult Create() { return View(); } [HttpPost] public ActionResult Create(Person person) { if(! ModelState.IsValid) { // re-render the view when validation failed. return View("Create", person); } TempData["notice"] = "Person successfully created"; return RedirectToAction("Index"); } }
@Html.ValidationSummary() @using (Html.BeginForm()) { Id: @Html.TextBoxFor(x => x.Id) @Html.ValidationMessageFor(x => x.Id) <br /> Name: @Html.TextBoxFor(x => x.Name) @Html.ValidationMessageFor(x => x.Name) <br /> Email: @Html.TextBoxFor(x => x.Email) @Html.ValidationMessageFor(x => x.Email) <br /> Age: @Html.TextBoxFor(x => x.Age) @Html.ValidationMessageFor(x => x.Age) <input type="submit" value="submit" /> }
public ActionResult Save([CustomizeValidator(RuleSet="MyRuleset")] Customer cust) { // ... }
public interface IValidatorFactory { IValidator<T> GetValidator<T>(); IValidator GetValidator(Type type); }
ObjectFactory.Configure(cfg => cfg.AddRegistry(new MyRegistry())); public class MyRegistry : Registry { public MyRegistry() { For<IValidator<Person>>() .Singleton() .Use<PersonValidator>(); } }
public class MyRegistry : Registry { public MyRegistry() { AssemblyScanner.FindValidatorsInAssemblyContaining<MyValidator>() .ForEach(result => { For(result.InterfaceType) .Singleton() .Use(result.ValidatorType); }); } }
protected void Application_Start() { RegisterRoutes(RouteTable.Routes); //Configure structuremap ObjectFactory.Configure(cfg => cfg.AddRegistry(new MyRegistry())); ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory()); //Configure FV to use StructureMap var factory = new StructureMapValidatorFactory(); //Tell MVC to use FV for validation ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(factory)); DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; }
PS> "" | Get-Member
TypeName: System.String Name MemberType Definition ---- ---------- ---------- Clone Method System.Object Clone(), System.Object ICloneable.Clone() CompareTo Method int CompareTo(System.Object value), int CompareTo(strin… Contains Method bool Contains(string value), bool Contains(string value… CopyTo Method void CopyTo(int sourceIndex, char[] destination, int de… EndsWith Method bool EndsWith(string value), bool EndsWith(string value… EnumerateRunes Method System.Text.StringRuneEnumerator EnumerateRunes() Equals Method bool Equals(System.Object obj), bool Equals(string valu… GetEnumerator Method System.CharEnumerator GetEnumerator(), System.Collectio… GetHashCode Method int GetHashCode(), int GetHashCode(System.StringCompari… GetPinnableReference Method System.Char&, System.Private.CoreLib, Version=6.0.0.0, … GetType Method type GetType() GetTypeCode Method System.TypeCode GetTypeCode(), System.TypeCode IConvert… IndexOf Method int IndexOf(char value), int IndexOf(char value, int st… IndexOfAny Method int IndexOfAny(char[] anyOf), int IndexOfAny(char[] any… Insert Method string Insert(int startIndex, string value) IsNormalized Method bool IsNormalized(), bool IsNormalized(System.Text.Norm… LastIndexOf Method int LastIndexOf(string value, int startIndex), int Last… LastIndexOfAny Method int LastIndexOfAny(char[] anyOf), int LastIndexOfAny(ch… Normalize Method string Normalize(), string Normalize(System.Text.Normal… PadLeft Method string PadLeft(int totalWidth), string PadLeft(int tota… PadRight Method string PadRight(int totalWidth), string PadRight(int to… Remove Method string Remove(int startIndex, int count), string Remove… Replace Method string Replace(string oldValue, string newValue, bool i… ReplaceLineEndings Method string ReplaceLineEndings(), string ReplaceLineEndings(… Split Method string[] Split(char separator, System.StringSplitOption… StartsWith Method bool StartsWith(string value), bool StartsWith(string v… Substring Method string Substring(int startIndex), string Substring(int … ToBoolean Method bool IConvertible.ToBoolean(System.IFormatProvider prov… ToByte Method byte IConvertible.ToByte(System.IFormatProvider provide… ToChar Method char IConvertible.ToChar(System.IFormatProvider provide… ToCharArray Method char[] ToCharArray(), char[] ToCharArray(int startIndex… ToDateTime Method datetime IConvertible.ToDateTime(System.IFormatProvider… ToDecimal Method decimal IConvertible.ToDecimal(System.IFormatProvider p… ToDouble Method double IConvertible.ToDouble(System.IFormatProvider pro… ToInt16 Method short IConvertible.ToInt16(System.IFormatProvider provi… ToInt32 Method int IConvertible.ToInt32(System.IFormatProvider provide… ToInt64 Method long IConvertible.ToInt64(System.IFormatProvider provid… ToLower Method string ToLower(), string ToLower(cultureinfo culture) ToLowerInvariant Method string ToLowerInvariant() ToSByte Method sbyte IConvertible.ToSByte(System.IFormatProvider provi… ToSingle Method float IConvertible.ToSingle(System.IFormatProvider prov… ToString Method string ToString(), string ToString(System.IFormatProvid… ToType Method System.Object IConvertible.ToType(type conversionType, … ToUInt16 Method ushort IConvertible.ToUInt16(System.IFormatProvider pro… ToUInt32 Method uint IConvertible.ToUInt32(System.IFormatProvider provi… ToUInt64 Method ulong IConvertible.ToUInt64(System.IFormatProvider prov… ToUpper Method string ToUpper(), string ToUpper(cultureinfo culture) ToUpperInvariant Method string ToUpperInvariant() Trim Method string Trim(), string Trim(char trimChar), string Trim(… TrimEnd Method string TrimEnd(), string TrimEnd(char trimChar), string… TrimStart Method string TrimStart(), string TrimStart(char trimChar), st… TryCopyTo Method bool TryCopyTo(System.Span[char] destination) Chars ParameterizedProperty char Chars(int index) {get;} Length Property int Length {get;}
$stringVariable = "Hello World" $letter = 'A' $isEnabled = $false $age = 33 $height = 76 $doubleVar = 54321.21 $singleVar = 76549.11 $longVar = 2382.22 $dateVar = "July 24, 1986" $arrayVar = "A", "B", "C" $hashtableVar = @{ Name = "Sirwan"; Age = 33; }
[string]$stringVariable = "Hello World" [char]$letter = 'A' [bool]$isEnabled = $false [int]$age = 33 [decimal]$height = 76 [double]$doubleVar = 54321.21 [single]$singleVar = 76549.11 [long]$longVar = 2382.22 [DateTime]$dateVar = "July 24, 1986" [array]$arrayVar = "A", "B", "C" [hashtable]$hashtableVar = @{ Name = "Sirwan"; Age = 33; }
$global:stringVariable = "Hello World" // Or [string]$global:stringVariable = "Hello World"
$guess = 20 switch ($guess) { {$_ -eq 20} { Write-Host "You guessed right!" } {$_ -gt 20} { Write-Host "You guessed too high!" } {$_ -lt 20} { Write-Host "You guessed too low!" } default { Write-Host "You didn't guess a number!" } } $guess = 20 if ($guess -eq 20) { Write-Host "You guessed right!" } elseif ($guess -gt 20) { Write-Host "You guessed too high!" } elseif ($guess -lt 20) { Write-Host "You guessed too low!" } else { Write-Host "You didn't guess a number!" }
$message = (Test-Path $path) ? "Path exists" : "Path not found"
[int]$num = 10 for ($i = 1; $i -le $num; $i++) { Write-Host "`n" for ($j = 1; $j -le $num; $j++) { Write-Host -NoNewline -ForegroundColor Green ($i * $j).ToString().PadLeft(6) } } Write-Host "`n`n" [int]$counter = 1 while ($counter -le 10) { Write-Host "Hello World" $counter++ } do { Write-Host "Hello World" $counter++ } while ($counter -le 10) foreach ($i in 1..10) { Write-Host "Hello World" } $items = "Hello", "World" $items | ForEach-Object { Write-Host $_ }
$array = @()
$myArray = [Object[]]::new(10) $byteArray = [Byte[]]::new(100) $ipAddresses = [IPAddress[]]::new(5) $mylist = [System.Collections.Generic.List[int]]::new()
using namespace System.Collections.Generic $mylist = [List[int]]::new()
$numbers = 1..10 $alphabet = "a".."z" foreach ($item in 1..10) { Write-Host "Hello World" }
$numbers = 1..10 $numbers Write-Output "".PadRight(10, "-") $numbers[1..2 + 2..4]
$colours = [System.Collections.ArrayList]@("Red", "Green", "Blue") $colours.Add("Yellow") $colours.Remove("Red")
using namespace System.Collections.Generic $mylist = [List[int]]::new() Measure-Command { 1..100000 | ForEach-Object { $mylist.Add($_) } } Measure-Command { $mylist.Where({ $_ -gt 10000 }) } Measure-Command { $mylist.Contains(10000) }
$sensors = @{ tempreture = "Temperature" humidity = "Humidity" pressure = "Pressure" light = "Light" noise = "Noise" co2 = "CO2" battery = "Battery" min_temp = "Min Temp" max_temp = "Max Temp" }
PS> Get-Command -ParameterType Hashtable CommandType Name Version Source ----------- ---- ------- ------ Function TabExpansion2 Cmdlet Add-Member 7.0.0.0 Microsoft.Powe… Cmdlet ConvertTo-Html 7.0.0.0 Microsoft.Powe… Cmdlet Get-Job 7.2.7.500 Microsoft.Powe… Cmdlet Invoke-Command 7.2.7.500 Microsoft.Powe… Cmdlet Invoke-RestMethod 7.0.0.0 Microsoft.Powe… Cmdlet Invoke-WebRequest 7.0.0.0 Microsoft.Powe… Cmdlet New-Object 7.0.0.0 Microsoft.Powe… Cmdlet New-PSRoleCapabilityFile 7.2.7.500 Microsoft.Powe… Cmdlet New-PSSession 7.2.7.500 Microsoft.Powe… Cmdlet Remove-Job 7.2.7.500 Microsoft.Powe… Cmdlet Select-Xml 7.0.0.0 Microsoft.Powe… Cmdlet Set-PSReadLineOption 2.1.0 PSReadLine Cmdlet Stop-Job 7.2.7.500 Microsoft.Powe… Cmdlet Wait-Job 7.2.7.500 Microsoft.Powe…
function Write-HelloWorld { Write-Host "Hello World" }
PS> Get-Command -CommandType Function
function Write-HelloWorld { Write-Host "First Argument: $($args[0])" Write-Host "Second Argument: $($args[1])" Write-Host "Third Argument: $($args[2])" Write-Host "Fourth Argument: $($args[3])" }
function Write-HelloWorld( [string]$first, [string]$second, [string]$third, [string]$fourth ) { Write-Host "First Argument: $($first)" Write-Host "Second Argument: $($second)" Write-Host "Third Argument: $($third)" Write-Host "Fourth Argument: $($fourth)" }
Get-Command -ParameterType Hashtable | Out-ConsoleGridview
البته به صورت پیشفرض نصب نیست و باید از طریق PowerShell Gallery آن را نصب کنید:
Install-Module -Name Microsoft.PowerShell.ConsoleGuiTools
//_EntityFormLayout.cshtml @inherits EntityFormRazorPage<dynamic> @{ Layout = null; } <div class="modal-header"> <h4 class="modal-title" asp-if="IsNew">Create New @EntityDisplayName</h4> <h4 class="modal-title" asp-if="!IsNew">Edit @EntityDisplayName</h4> <button type="button" class="close" data-dismiss="modal">×</button> </div> <form asp-action="@(IsNew ? CreateActionName : EditActionName)" asp-modal-form="@FormId"> <div class="modal-body"> <input type="hidden" name="continue-editing" value="true" asp-permission="@EditPermission"/> <input asp-for="@Version" type="hidden"/> <input asp-for="@Id" type="hidden"/> @RenderBody() </div> <div class="modal-footer"> <a class="btn btn-light btn-circle" asp-modal-delete-link asp-model-id="@Id" asp-modal-toggle="false" asp-action="@DeleteActionName" asp-if="!IsNew" asp-permission="@DeletePermission" title="Delete Role"> <i class="fa fa-trash text-danger"></i> </a> <a class="btn btn-light btn-circle" title="Refresh Role" asp-if="!IsNew" asp-modal-link asp-modal-toggle="false" asp-action="@EditActionName" asp-route-id="@Id"> <i class="fa fa-repeat"></i> </a> <a class="btn btn-light btn-circle mr-auto" title="New Role" asp-modal-link asp-modal-toggle="false" asp-permission="@CreatePermission" asp-action="@CreateActionName"> <i class="fa fa-plus"></i> </a> <button type="button" class="btn btn-light" data-dismiss="modal"> <i class="fa fa-ban"></i> Cancel </button> <button type="submit" class="btn btn-outline-primary"> <i class="fa fa-save"></i> Save Changes </button> </div> </form>
public abstract class EntityFormRazorPage<T> : RazorPage<T> { protected string EntityName { get => ViewData[nameof(EntityName)].ToString(); set => ViewData[nameof(EntityName)] = value; } protected string EntityDisplayName { get => ViewData[nameof(EntityDisplayName)].ToString(); set => ViewData[nameof(EntityDisplayName)] = value; } protected string DeletePermission { get => ViewData[nameof(DeletePermission)].ToString(); set => ViewData[nameof(DeletePermission)] = value; } protected string CreatePermission { get => ViewData[nameof(CreatePermission)].ToString(); set => ViewData[nameof(CreatePermission)] = value; } protected string EditPermission { get => ViewData[nameof(EditPermission)].ToString(); set => ViewData[nameof(EditPermission)] = value; } protected string CreateActionName { get => ViewData.TryGetValue(nameof(CreateActionName), out var value) ? value.ToString() : "Create"; set => ViewData[nameof(CreateActionName)] = value; } protected string EditActionName { get => ViewData.TryGetValue(nameof(EditActionName), out var value) ? value.ToString() : "Edit"; set => ViewData[nameof(EditActionName)] = value; } protected string DeleteActionName { get => ViewData.TryGetValue(nameof(DeleteActionName), out var value) ? value.ToString() : "Delete"; set => ViewData[nameof(DeleteActionName)] = value; } protected string FormId => $"{EntityName}Form"; protected bool IsNew => (Model as dynamic).IsNew(); protected string Id => (Model as dynamic).Id.ToString(CultureInfo.InvariantCulture); protected byte[] Version => (Model as dynamic).Version; }
//_BlogPartial.cshtml @inherits EntityFormRazorPage<BlogModel> @{ Layout = "_EntityFormLayout"; EntityName = "Blog"; DeletePermission = PermissionNames.Blogs_Delete; CreatePermission = PermissionNames.Blogs_Create; EditPermission = PermissionNames.Blogs_Edit; EntityDisplayName = "Blog"; }
//_BlogPartial.cshtml @inherits EntityFormRazorPage<BlogModel> @{ Layout = "_EntityFormLayout"; ... } <div class="form-group row"> <div class="col col-md-8"> <label asp-for="Title" class="col-form-label text-md-left"></label> <input asp-for="Title" autocomplete="off" class="form-control"/> <span asp-validation-for="Title" class="text-danger"></span> </div> </div> <div class="form-group row"> <div class="col"> <label asp-for="Url" class="col-form-label text-md-left"></label> <input asp-for="Url" class="form-control" type="url"/> <span asp-validation-for="Url" class="text-danger"></span> </div> </div>
//_BlogPartial.cshtml @inherits EntityFormRazorPage<BlogModel> @{ Layout = "_EntityFormLayout"; EntityName = "Blog"; DeletePermission = PermissionNames.Blogs_Delete; CreatePermission = PermissionNames.Blogs_Create; EditPermission = PermissionNames.Blogs_Edit; EntityDisplayName = "Blog"; } @Html.EditorForModel()
Level 0: Sky Zone: CREATE TABLE, JOIN, NULL, ...
Level 1: Surface Zone: ACID, outer joins, normal forms, ...
Level 2: Sunlight Zone: Connection pools, LATERAL Join, Stored Procedures, ...
Level 3: Twilight Zone: Isolation levels, ZigZag Join, Triggers, ...
Level 4: Midnight Zone: Denormalization, SELECT FOR UPDATE, star schemas, ...
Level 5: Abyssal Zone: MATCH PARTIAL foreign keys, 'null'::jsonb IS NULL = false, ...
Level 6: Hadal Zone: volcano model, join ordering is NP Hard, ...
Level 7: Pitch Black Zone: NULL, the halloween problem, fsyncgate, ...
ctx.Advertisements.Where(...).Project().To<AdvertisementViewModel>().ToList()